我正在做一个简单的功能.将所有单词首字母大写为大写,但它根本不起作用,既不显示任何错误:
function formatTitle(input) {
var words = input.split(' ');
for (var i = 0; i < words.length; i++) {
words[i][0] = words[i][0].toUpperCase();
};
return words.join(' ');
};
var newTitle = formatTitle("all words first-letter should be upper case");
document.write(newTitle);Run Code Online (Sandbox Code Playgroud)
提前致谢.
问题是javascript中的字符串是不可变的.你不能只改变像这样的字符.
解决方案是:
words[i] = words[i][0].toUpperCase()+words[i].slice(1);
Run Code Online (Sandbox Code Playgroud)
但是使用正则表达式可以获得更简单,更快速的代码:
return input.replace(/\b\w/g,function(b){ return b.toUpperCase() })
Run Code Online (Sandbox Code Playgroud)
(这里有一个更完整的大写,不仅仅是在空格之后 - 如果你想坚持使用空间replace(/(\s+|^)\w/g,function(b){ return b.toUpperCase() }))
问题
因为
words[i][0] = 'something'
Run Code Online (Sandbox Code Playgroud)
没有更新words[i].
问题演示
var myVar = 'abc';
myVar[0] = 'd';
document.write(myVar); // abcRun Code Online (Sandbox Code Playgroud)
解
您可以使用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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |