2016-11-03 51 views
-3

我已其中大寫每個單詞的第一個字母的功能大寫如果它是一個名字(例子2),它喜歡在撇號之後大寫,但不適用於(例子3)。我怎樣才能解決這個問題? Fiddle here第一個字母大寫功能也之後撇號

編輯:我不認爲這是this question重複,因爲我專門詢問未能好好利用但經過其他撇號的就可以了。

+2

[使用大寫字母(http://stackoverflow.com/questions/2332811/capitalize-words-in-string) – ASDFGerte

+0

@Soviut我在正則表達式無望,所以我不知道從哪裏開始!這很複雜,因爲如果表達式只是_'s_那麼它不應該大寫,否則它應該。 – Brad

+0

@ASDFGerte,感謝您的鏈接,但它似乎並沒有提供我需要的差異,除非我失去了一些東西? – Brad

回答

2

不幸的是,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)); 
}); 
+0

太棒了!謝謝@ppovoski!我只是將第二行從'/'(S)/ g,'改成'/'(S)/ g''來捕獲空間。這樣o'sullivan這樣的名字仍然會被大寫。隊友的歡呼聲 – Brad