将句子转换为 InitCap / 驼峰式大小写 / Proper Case

新手上路,请多包涵

我已经制作了这段代码。我想要一个小的正则表达式。

 String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}
String.prototype.initCap = function () {
    var new_str = this.split(' '),
        i,
        arr = [];
    for (i = 0; i < new_str.length; i++) {
        arr.push(initCap(new_str[i]).capitalize());
    }
    return arr.join(' ');
}
alert("hello world".initCap());

小提琴

我想要的是

“你好世界”.initCap() => 你好世界

“hHello woRld”.initCap() => 你好世界

我上面的代码给了我解决方案,但我想要一个更好更快的正则表达式解决方案

原文由 Tushar Gupta - curioustushar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 510
2 个回答

你可以试试:

  • 将整个字符串转换为小写
  • 然后使用replace()方法将首字母转换为每个单词首字母大写
 str = "hEllo woRld";
String.prototype.initCap = function () {
   return this.toLowerCase().replace(/(?:^|\s)[a-z]/g, function (m) {
      return m.toUpperCase();
   });
};
console.log(str.initCap());

原文由 anubhava 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你想用撇号/破折号来解释名字,或者如果在句子之间的句点之后可能会省略一个空格,那么你可能想在你的将空格、撇号、句点、破折号等后的任何字母大写的正则表达式。

 str = "hEllo billie-ray o'mALLEY-o'rouke.Please come on in.";
String.prototype.initCap = function () {
   return this.toLowerCase().replace(/(?:^|\b)[a-z]/g, function (m) {
      return m.toUpperCase();
   });
};
alert(str.initCap());

输出:你好 Billie-Ray O’Malley-O’Rouke。请进。

原文由 RJLyders 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题