2014-05-19 76 views
0

我正在嘗試構建一個JavaScript initcap函數,它將每個單詞中的第一個字母正確地轉換爲大寫,並將其他字母轉換爲小寫。JavaScript中的初始化

所有的例子,我發現將第一字符這是不正確,如: 喬·史密斯(CEO)應轉化爲喬·史密斯(CEO),而不是張三(C EO)

CSS變換不是一個選項,因爲該值將返回給服務器。

可能使用正則表達式是要走的路,但我不是這方面的專家。任何幫助?

+0

我敢打賭腳本工作正常。如果我不得不猜測,他們轉換第一個***字符***不一定是第一個字母。 (即在你上面的例子中,腳本可能試圖轉換'('而不是'c')。添加一個檢查以確保第一個字符是來自「A-Z」的字符,然後將其大寫。 – War10ck

回答

0

小編輯的答案,這個副本,如果你讀了意見接受的答案,你會發現有你的答案:

function toTitleCase(str) 
{ 
    return str.replace(/([^\W_]+[^\s-]*) */g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
} 
0

另一個版本基於OK前瞻:

joe smith(c e o)'.replace(/\b[a-z](?=(?:[a-z]|\W|$))/g, function($0) { 
    return $0.toUpperCase();}) 
//=> "Joe Smith(C E O)"