JavaScript toUpperCase不起作用。为什么?

时间:2015-07-23 12:36:48

标签: javascript

我正在做一个简单的功能。将所有单词首字母大写为大写,但它根本不起作用,也不显示任何错误:

Object

提前致谢。

3 个答案:

答案 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]

问题演示

&#13;
&#13;
var myVar = 'abc';

myVar[0] = 'd';

document.write(myVar); // abc
&#13;
&#13;
&#13;

<强>解决方案

您可以使用substr获取第一个字符并更新整个字符串的值。

解决方案演示

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

如何写Denis的原因是javascript中的字符串是不可变的(数字和布尔值也是不可变的)。

Upperize字符串的第一个字符的另一个非常简单的解决方案是:

function firstUpper(word) {
     return word.charAt(0).toUpperCase() + word.substring(1);
};

我建议也阅读这篇文章:Understanding Javascript immutable variable

希望这个帮助