将每个单词的第一个字母大写

Dav*_*vid 15 javascript

我想使用javascript函数来大写每个单词的第一个字母

例如:

THIS IS A TEST ---> This Is A Test
this is a TEST ---> This Is A Test
this is a test ---> This Is A Test
Run Code Online (Sandbox Code Playgroud)

什么是一个简单的JavaScript函数

Ste*_*hen 33

这是我用来完成工作的一个小班轮

var str = 'this is an example';
str.replace(/\b./g, function(m){ return m.toUpperCase(); });
Run Code Online (Sandbox Code Playgroud)

但John Resig做了一个非常棒的脚本来处理很多案例 http://ejohn.org/blog/title-capitalization-in-javascript/

更新

ES6 +回答:

str.split(' ').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');

可能还有比这更好的方法.它将适用于重音字符.

  • 我喜欢这个简单而简洁. (4认同)

rea*_*000 9

function capitalizeEachWord(str)
{
   var words = str.split(" ");
   var arr = [];
   for (i in words)
   {
      temp = words[i].toLowerCase();
      temp = temp.charAt(0).toUpperCase() + temp.substring(1);
      arr.push(temp);
   }
   return arr.join(" ");
}
Run Code Online (Sandbox Code Playgroud)


And*_* D. 5

"tHiS iS a tESt".replace(/[^\s]+/g, function(str){ 
    return str.substr(0,1).toUpperCase()+str.substr(1).toLowerCase();
  });
Run Code Online (Sandbox Code Playgroud)

其他变种:

"tHiS iS a tESt".replace(/(\S)(\S*)/g, function($0,$1,$2){ 
    return $1.toUpperCase()+$2.toLowerCase();
  });
Run Code Online (Sandbox Code Playgroud)


oez*_*ezi 1

看看php.js 中的 ucwords - 这似乎就是您正在寻找的东西。基本上,它是:

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}
Run Code Online (Sandbox Code Playgroud)

请注意,THIS IS A TEST它将返回THIS IS A TEST,因此您必须像这样使用它:

var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring.toLowerCase());
Run Code Online (Sandbox Code Playgroud)

或者稍微修改一下函数:

function ucwords (str) {
    str = (str + '').toLowerCase();
    return str.replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}
var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring); // This Is A Test
Run Code Online (Sandbox Code Playgroud)