在字符串中大写单词的最佳方法是什么?


当前回答

http://www.mediacollege.com/internet/javascript/text/case-capitalize.html是众多答案中的一个。

谷歌可以是解决此类问题所需的全部内容。

naïve方法是用空格分隔字符串,结果数组中每个元素的首字母大写,然后将它们重新连接起来。这就保留了现有的大写(例如,HTML仍然是HTML,而不会变成像HTML那样愚蠢的东西)。如果不希望产生这种影响,请在拆分字符串之前将整个字符串转换为小写字母。

其他回答

http://www.mediacollege.com/internet/javascript/text/case-capitalize.html是众多答案中的一个。

谷歌可以是解决此类问题所需的全部内容。

naïve方法是用空格分隔字符串,结果数组中每个元素的首字母大写,然后将它们重新连接起来。这就保留了现有的大写(例如,HTML仍然是HTML,而不会变成像HTML那样愚蠢的东西)。如果不希望产生这种影响,请在拆分字符串之前将整个字符串转换为小写字母。

function capitalize(s){
    return s.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
};

capitalize('this IS THE wOrst string eVeR');

输出:“这是有史以来最糟糕的字符串”

更新:

这个解决方案似乎取代了我的:https://stackoverflow.com/a/7592235/104380

Jquery或Javascipt没有提供内置方法来实现这一点。

CSS测试转换(text-transform:capitalize;)并不真正大写字符串的数据,而是在屏幕上显示一个大写的渲染。

如果您正在使用普通的香草ajs在数据级别上寻找一种更合法的方法来实现这一点,请使用这个解决方案=>

var capitalizeString = function (word) {    
    word = word.toLowerCase();
    if (word.indexOf(" ") != -1) { // passed param contains 1 + words
        word = word.replace(/\s/g, "--");
        var result = $.camelCase("-" + word);
        return result.replace(/-/g, " ");
    } else {
    return $.camelCase("-" + word);
    }
}

Ivo的答案很好,但我更喜欢不匹配\w,因为没有必要大写0-9和A-Z。我们可以忽略这些,只匹配a-z。

'your string'.replace(/\b[a-z]/g, match => match.toUpperCase())
// => 'Your String'

这是相同的输出,但我认为在自文档代码方面更清楚。

只要输入字符串中没有重音字母,vsync提供的答案就可以工作。

我不知道原因,但显然\b在regexp匹配也重音字母(在IE8和Chrome上测试),所以像“località”这样的字符串会被错误地大写转换为“LocalitÀ”(à字母被大写,因为regexp认为这是一个单词边界)

一个更通用的函数也适用于重音字母是这样的:

String.prototype.toCapitalize = function()
{ 
   return this.toLowerCase().replace(/^.|\s\S/g, function(a) { return a.toUpperCase(); });
}

你可以这样使用它:

alert( "hello località".toCapitalize() );