Javascript 返回有关单词中间大写字母的标题大小写?

Javascript 返回有关单词中间大写字母的标题大小写?,javascript,Javascript,不确定这是否是重复的(不确定如何搜索才能确定,因为我的google fu现在很弱) 我有一些javascript代码将每个单词的第一个字母转换为大写。我需要修改它,以便它尊重你可能在姓氏中看到的奇怪的大写字母(例如:McGuire、MacGonnacle、O'Brien)。 基本上,这个想法是强制每个单词的第一个字母大写,但如果以大写形式输入,则不将所有其他字母转换为小写 下面是代码片段: function properCase(str) { str = str.toLowerCase(

不确定这是否是重复的(不确定如何搜索才能确定,因为我的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();
             });
}

这可能是因为周末是一天的最后一天,但我需要做什么修改呢?

你拥有大部分,只需删除str.toLowerCase()

运行
properCase('mcCormick')
返回
mcCormick

编辑:

看看正则表达式,我认为您可能不需要整个表达式(尽管它取决于您的用例,就像所有事情一样)


这将大写以字母开头的任何单词的开头。Ex
properCase('mcCormick是*一个优秀的决斗列表')
返回
“mcCormick是*一个优秀的决斗列表”

只要不要调用
toLowerCase()
。iPod、iOS、jQuery……呢?这是为了一个用户的姓氏,所以我怀疑是否有人使用jQuery:)就是这样。哇!一天结束时,大脑油炸。谢谢你,伙计。有趣的是,我得到了正则表达式,但错过了toLowerCase。为什么要包含
\W
?嗯,我甚至都没看正则表达式。一个确保它捕获任何空白的部分。。。试图只抓住第一个字母。虽然现在我看了一下,我想我可以把它省略掉。@metalfenix嗯,只是抬头看了看,我想我可以侥幸逃脱
/\b([a-z])/
我不能。尽管这是上面提到的大写字母a in*an。不确定这在您的用例中是好是坏
function properCase(str) {
  return str.replace(/(\b)([a-z\WA-Z\W])/g,function (firstLetter) {
    return firstLetter.toUpperCase();
  });
}
function properCase(str) {
  return str.replace(/(?:^|\s)([a-z])/,function (firstLetter) {
    return firstLetter.toUpperCase();
  });
}