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

Return Title Case respecting capital letters in middle of word?

本文关键字:单词 中间 大写字母 标题 大小写 返回      更新时间:2023-09-26

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

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"