我正在做一个简单的功能。将所有单词首字母大写为大写,但它根本不起作用,也不显示任何错误:
Object
提前致谢。
答案 0 :(得分:9)
问题是javascript中的字符串是不可变的。你不能只改变像这样的字符。
解决方案是:
words[i] = words[i][0].toUpperCase()+words[i].slice(1);
但是使用正则表达式可以获得更简单,更快速的代码:
return input.replace(/\b\w/g,function(b){ return b.toUpperCase() })
(这里有一个更完整的大写字母,而不仅仅是在空格之后 - 如果你想坚持使用空格replace(/(\s+|^)\w/g,function(b){ return b.toUpperCase() })
)
答案 1 :(得分:6)
<强>问题强>
因为
words[i][0] = 'something'
不会更新words[i]
。
问题演示
var myVar = 'abc';
myVar[0] = 'd';
document.write(myVar); // abc
&#13;
<强>解决方案强>
您可以使用substr
获取第一个字符并更新整个字符串的值。
解决方案演示
function formatTitle(input) {
var words = input.split(' ');
for (var i = 0; i < words.length; i++) {
words[i] = words[i].substr(0, 1).toUpperCase() + words[i].substr(1);
}
return words.join(' ');
}
var newTitle = formatTitle("all words first-letter should be upper case");
document.write(newTitle);
&#13;
答案 2 :(得分:0)
如何写Denis的原因是javascript中的字符串是不可变的(数字和布尔值也是不可变的)。
Upperize字符串的第一个字符的另一个非常简单的解决方案是:
function firstUpper(word) {
return word.charAt(0).toUpperCase() + word.substring(1);
};
我建议也阅读这篇文章:Understanding Javascript immutable variable
希望这个帮助