我想使用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
這將是一個簡單的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
這將是一個簡單的JavaScript函數
起飛看看ucwords from php.js - 這似乎是你要找的東西。基本上,它是:
function ucwords (str) {
return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
注意THIS IS A TEST
返回THIS IS A TEST
所以你必須使用這樣的:
var oldstring = "THIS IS A TEST";
var newstring = ucwords(oldstring.toLowerCase());
或修改功能的位:
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
這對於非ASCII字母不起作用。 – Joey
"tHiS iS a tESt".replace(/[^\s]+/g, function(str){
return str.substr(0,1).toUpperCase()+str.substr(1).toLowerCase();
});
其他變體:
"tHiS iS a tESt".replace(/(\S)(\S*)/g, function($0,$1,$2){
return $1.toUpperCase()+$2.toLowerCase();
});
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(" ");
}
這也適用,如果第一個字母重音 – coorasse
這裏有一個小一個襯墊,我使用來完成這項工作
var str = 'this is an example';
str.replace(/\b./g, function(m){ return m.toUpperCase(); });
但約翰Resig的這樣做處理很多情況下,一個相當真棒腳本 http://ejohn.org/blog/title-capitalization-in-javascript/
更新
ES6 +回答:
str.split(' ').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');
這可能是一種比這更好的方法。它將處理重音字符。
這將利用每一個字由空格或破折號
function capitalize(str){
str = str.toLowerCase();
return str.replace(/([^ -])([^ -]*)/gi,function(v,v1,v2){ return v1.toUpperCase()+v2; });
}
實例分隔:
etc
這是一個簡單的解決方案,將句子分解爲一個數組,然後循環遍歷數組,創建一個大寫字母的新數組。
function capitalize(str){
var strArr = str.split(" ");
var newArr = [];
for(var i = 0 ; i < strArr.length ; i++){
var FirstLetter = strArr[i].charAt(0).toUpperCase();
var restOfWord = strArr[i].slice(1);
newArr[i] = FirstLetter + restOfWord;
}
return newArr.join(' ');
}
+1以提高可讀性 – iamwhitebox
如果你不介意使用一個庫,你可以使用Sugar.jscapitalize()
資本(全部= FALSE)大寫的 字符串的第一個字符和downcases所有其他字母。如果全部爲真,則 中的所有單詞都將被大寫。
例子:
'hello kitty'.capitalize() -> 'Hello kitty'
'hello kitty'.capitalize(true) -> 'Hello Kitty'
你也可以使用過濾器使用下面的方法:
function Ucwords(str){
var words = str.split(' ');
var arr = [];
words.filter(function(val){
arr.push(val.charAt(0).toUpperCase()+ val.substr(1).toLowerCase());
})
console.log(arr.join(" ").trim());
return arr.join(" ").trim();
}
Ucwords("THIS IS A TEST") //This Is A Test
Ucwords("THIS ") //This
http://stackoverflow.com/questions/1026069/capitalize-the-first-letter- string-in-javascript –
轉向小寫形式,通過將空白分割成單個單詞,在每個單詞的第一個字符上將toUpperCase()分割。 – bdares
@ reader_1000:這個問題是關於大寫的字符串的第一個字符,雖然這是關於uoppercasing每個單詞的第一個字符(這是更復雜的方式,需要一個不同的解決方案) – oezi