我已其中大寫每個單詞的第一個字母的功能大寫如果它是一個名字(例子2),它喜歡在撇號之後大寫,但不適用於的(例子3)。我怎樣才能解決這個問題? Fiddle here第一個字母大寫功能也之後撇號
編輯:我不認爲這是this question重複,因爲我專門詢問未能好好利用的但經過其他撇號的就可以了。
我已其中大寫每個單詞的第一個字母的功能大寫如果它是一個名字(例子2),它喜歡在撇號之後大寫,但不適用於的(例子3)。我怎樣才能解決這個問題? Fiddle here第一個字母大寫功能也之後撇號
編輯:我不認爲這是this question重複,因爲我專門詢問未能好好利用的但經過其他撇號的就可以了。
不幸的是,Javascript正則表達式沒有使用lookbehind
語法在一個正則表達式中完成,但是,您可以分兩步完成。大寫,因爲你現在,但小寫的事實後'S
。
var strings = [
"mark",
"mark o'loughlan",
"mark's audi"
]
var returnValue = "";
function format(str){
str = str.replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); });
str = str.replace(/'(S)/g, function(letter) { return letter.toLowerCase(); });
return str;
}
strings.forEach(function(string){
console.log(format(string));
});
太棒了!謝謝@ppovoski!我只是將第二行從'/'(S)/ g,'改成'/'(S)/ g''來捕獲空間。這樣o'sullivan這樣的名字仍然會被大寫。隊友的歡呼聲 – Brad
[使用大寫字母(http://stackoverflow.com/questions/2332811/capitalize-words-in-string) – ASDFGerte
@Soviut我在正則表達式無望,所以我不知道從哪裏開始!這很複雜,因爲如果表達式只是_'s_那麼它不應該大寫,否則它應該。 – Brad
@ASDFGerte,感謝您的鏈接,但它似乎並沒有提供我需要的差異,除非我失去了一些東西? – Brad