我成功了,所有变体都按原样显示 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
-
连接>
关于javascript - 从所有单词中替换,即使用破折号分隔,第一个字符大写[更简单的方法],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967852/