替换所有单词,即使用短划线分隔,第一个字符用大写[更简单的方式]

时间:2015-01-15 16:12:01

标签: javascript

我得到了它的工作,所有的变化都显示Sint-Anna应该是,但我想知道,有没有更简单的方法,因为它看起来非常混乱?

String.prototype.capitalize = function(){
    var sa = this.replace(/-/g,' ');
    var saa = sa.toLowerCase();
    var sb = saa.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
    var sc = sb.replace(/\s+/g, '-');
    return sc;
};

console.log('sint-anna'.capitalize());
console.log('sint anna'.capitalize());
console.log('sint-Anna'.capitalize());
console.log('Sint Anna'.capitalize());
console.log('SiNt anna'.capitalize());
console.log('SINT ANNA'.capitalize());

控制台:

Sint-Anna
Sint-Anna
Sint-Anna
Sint-Anna
Sint-Anna
Sint-Anna

Si ntAn na导致Si-Ntan-Na输入错误的方法无法导致{{1}}。

1 个答案:

答案 0 :(得分:2)

String.prototype.capitalize = function(){
   this.split('-').map(function(str){
      return str[0].toUpperCase() + str.substr(1).toLowerCase();
   }).join("-")  
};

我想,上面的内容会更简洁。它会在-上拆分,然后映射,将第一个字母和小写字母括起来,然后使用-

加入Array.join