将一个句子转换为InitCap / camel Case / Proper Case

时间:2013-11-08 16:02:07

标签: javascript regex string camelcasing

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

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());

Fiddle

我想要什么

  

“你好世界”.initCap()=&gt; Hello World

     

“hEllo woRld”.initCap()=&gt; Hello World

我的上述代码为我提供了解决方案,但我希望使用正则表达式提供更好,更快的解决方案

3 个答案:

答案 0 :(得分:16)

您可以尝试:

str = "hEllo woRld";
String.prototype.initCap = function () {
   return this.toLowerCase().replace(/(?:^|\s)[a-z]/g, function (m) {
      return m.toUpperCase();
   });
};
alert(str.initCap());

答案 1 :(得分:1)

str="hello";
init_cap=str[0].toUpperCase() + str.substring(1,str.length).toLowerCase();

alert(init_cap);

答案 2 :(得分:0)

如果要用撇号/破折号说明名称,或者在句子之间的句点后可能会省略空格,则可能要使用\ b(乞g或单词结尾)而不是\ s(空格) )在您的正则表达式中大写,并在空格,撇号,句号,破折号等后面加上大写字母。

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。请过来。