2011-07-04 64 views
5

我有改編自前一個問題/回答下面的代碼:Javascript/jQuery的大寫第一個字母的一些例外?

var str = $('title').text(); 
str = str.toLowerCase().replace(/\b[a-z]/g, convert); 
     function convert(){ 
return arguments[0].toUpperCase(); 
     } 
$('title').text(str); 

我需要一些例外添加到該如「和」。

在此先感謝。

+0

你有什麼問題嗎?請澄清一下? – chhameed

+0

您可以直接獲取並設置標題。在那裏沒有真正需要jQuery。 'str = document.title; document.title = str;' – user113716

回答

7

您可以構建Array的例外情況並檢查匹配的字符串是否匹配。

如果是這樣,只需返回就像

var str = document.title, 
    exceptions = ['hello', 'and', 'etc']; 

str = str.toLowerCase().replace(/\b([a-z])\w*\b/g, convert); 

function convert(word, firstChar) { 
    if ($.inArray(word, exceptions) != -1) { 
     return word; 
    } 
    return firstChar.toUpperCase() + word.substr(1); 
} 

document.title = str; 

jsFiddle

+0

擊敗我loool :) +1 – Val

+0

您應該將'$ .inArray'測試更改爲'> -1'或類似的東西,因爲它是'-1'被發現。 (可能在索引'0'處有一個匹配項)。 :o) – user113716

+0

嗨,亞歷克斯,謝謝你。但是不是使用.not或使用過濾器選擇器的簡單方法? – Paul

0

您還可以使用CSS選擇器:

.toUpperCase:first-letter { text-transform:uppercase }

然後

<div class="toUpperCase">text</div>

+0

將不會在 Foo .. – Paul

+0

這不考慮例外。 – alex

+0

當然,我主要考慮的事實是,如果它是一個div或任何其他元素,你可以在沒有正則表達式的情況下完成大寫,但只需在該元素上添加一個類即可。 – ebany

相關問題