从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]

Replace from all words, even if seperated with dash, first character with uppercase [more simple way]

本文关键字:字符 更简单 第一个 方法 破折号 单词中 替换 分隔      更新时间:2023-09-26

我让它工作了,所有变体都按原样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

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

我想以上会更简洁。它在-上拆分,然后映射,将第一个字母和小写字母捕获其他字母,然后使用Array.join-连接

相关文章: