为什么会失败?我应该(以某种方式)转义字母 i
— 这不会因其他字符而失败。
titleCase("I'm a little tea pot");
// Prints: "i'm A Little Tea Pot"
// Expected: "I'm A Little Tea Pot"
function titleCase(str) {
return str.split(' ').map(function(each) {
return each.toLowerCase().replace(each[0], each[0].toUpperCase());
}).join(' ');
}
最佳答案
.toLowerCase()
发生在 each
的原始值上,所以 .replace()
可能/不会给你预期的结果。
如果将其拆分为单独的语句,它应该会按预期工作:
function titleCase(str) {
return str.split(' ').map(function(each) {
each = each.toLowerCase();
return each.replace(each[0], each[0].toUpperCase());
}).join(' ');
}
作为一种稍微更有效的方法,最好将 .toLowerCase()
移动到 .map()
调用之前,这样它只需要调用一次,而不是每个单词调用一次:
function titleCase(str) {
str = str.toLowerCase();
return str.split(' ').map(function(each) {
return each.replace(each[0], each[0].toUpperCase());
}).join(' ');
}
关于javascript - 意外的 string.replace() 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39832068/