不确定这是否重复(不确定我是如何通过搜索来确定搜索结果的,因为我的google-fu今天很弱)
我有一些javascript代码可以将每个单词的第一个字母转换为大写。我需要改变它,以便它尊重你可能会在姓氏中看到的奇怪的大写(例如:McGuire,MacGonnacle,O' Brien)。
基本上,我们的想法是强制每个单词的首字母大写,但如果输入大写,则不会将所有其他字母转换为小写。
以下是代码段:
function properCase(str) {
str = str.toLowerCase();
return str.replace(/(\b)([a-z\WA-Z\W])/g,
function (firstLetter) {
return firstLetter.toUpperCase();
});
}
这可能是因为它是周末结束的,但我需要做些什么修改?
答案 0 :(得分:2)
你有大部分内容,只需删除str.toLowerCase();
function properCase(str) {
return str.replace(/(\b)([a-z\WA-Z\W])/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"