我想使用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(' ');
可能还有比这更好的方法.它将适用于重音字符.
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)
"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)
看看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)