返回标题大小写,尊重单词中间的大写字母



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

相关内容

  • 没有找到相关文章

最新更新