場景:toTitleCase JavaScript的邊緣情況
我有一個典型的toTitleCase() JavaScript函數W /正則表達式,我使用了一個單一的文本字段,一個人的名字和姓氏。
function toTitleCase(str) {
return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
}
問題
如圖所示 - 在這種情況下,我使用這個功能的名字和姓氏。因此 - 個人姓名可能有多個大寫字母。例如:James O'Mally或Robert McNally。不幸的是,上面的JavaScript函數將返回James O'mally或Robert Mcnally。
我希望一些很棒的Stackoverflow貢獻者可以提供一個RegEx解決方案,將這個邊緣案例考慮在內,並在字符串中間保留一個現有的大寫字母值。
感謝您的時間和考慮
好像你可以在最後取代「O'(\ w)」和「Mc(\ w)」... – dandavis
@dandavis:感謝您的輸入 - 這當然是一個好點;然而,這些事件的列舉是不可預測的。 Mc和O只是簡單的例子。有各種各樣的名字 - 特別是有這種模式的姓氏。例如Oscar De LaHoya或William DuBouis – Sean
事實上,問題太廣泛了。如果不知道它應該匹配什麼,我們就不可能編寫正則表達式。 – nhahtdh