关于javascript:如何将每个单词的第一个字母大写?

How to capitalize first letter of each word, like a 2-word city?

本问题已经有最佳答案,请猛点这里访问。

当城市只有一个词时,我的JS很好用:

  • 芝加哥=>芝加哥

但是当它的时候

  • 圣地亚哥==>圣地亚哥

我怎样才能让它变成圣地亚哥?

1
2
3
4
5
function convert_case() {
    document.profile_form.city.value =
        document.profile_form.city.value.substr(0,1).toUpperCase() +
        document.profile_form.city.value.substr(1).toLowerCase();
}

这里有一个很好的答案:

1
2
3
4
5
function toTitleCase(str) {
    return str.replace(/\w\S*/g, function(txt){
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

或在ES6中:

1
2
3
4
5
var text ="foo bar loo zoo moo";
text = text.toLowerCase()
    .split(' ')
    .map((s) => s.charAt(0).toUpperCase() + s.substring(1))
    .join(' ');


您可以使用CSS:

1
p.capitalize {text-transform:capitalize;}


1
2
3
4
5
6
function convertCase(str) {
  var lower = String(str).toLowerCase();
  return lower.replace(/(^| )(\w)/g, function(x) {
    return x.toUpperCase();
  });
}


javascript函数:

1
2
3
String.prototype.capitalize = function(){
       return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
      };

要使用此功能:

1
capitalizedString = someString.toLowerCase().capitalize();

同样,这也适用于多个单词字符串。

为了确保将转换后的城市名称插入数据库中,首先大写字母,然后在将其发送到服务器端之前需要使用javascript。CSS只是样式,但实际数据将保持预先样式化。看看这个JSfiddle示例,比较警报消息和样式化输出。