不确定这是否是重复的(不确定我如何搜索才能确定找到它,因为我的 google-fu 今天很弱)
我有一些javascript代码可以将每个单词的第一个字母转换为大写。我需要更改它,使其尊重您可能在姓氏中看到的古怪大写(例如:McGuire,MacGonnacle,O'Brien)。
从本质上讲,这个想法是强制每个单词的第一个字母大写,但如果以大写形式输入,则不要将所有其他字母转换为小写。
这是代码片段:
function properCase(str) {
str = str.toLowerCase();
return str.replace(/(b)([a-zWA-ZW])/g,
function (firstLetter) {
return firstLetter.toUpperCase();
});
}
这可能是因为这是周末的一天结束,但我需要进行哪些修改?
你有大部分,只需删除 str.toLowerCase();
function properCase(str) {
return str.replace(/(b)([a-zWA-ZW])/g,function (firstLetter) {
return firstLetter.toUpperCase();
});
}
运行properCase('mcCormick')
返回McCormick
编辑:
看看正则表达式,我认为您可能不需要整个表达式(尽管这取决于您的用例,就像所有事情一样)
function properCase(str) {
return str.replace(/(?:^|s)([a-z])/,function (firstLetter) {
return firstLetter.toUpperCase();
});
}
这将大写任何以字母开头的单词的开头。 Ex properCase('mcCormick is *an excellent duelist')
退货"McCormick Is *an Excellent Duelist"