我正在使用此行资本化每个单词的所有第一个字母
text.replace(/bw^w/g, l => l.toUpperCase());
它成功大写了普通词,例如 asif saeed
-> Asif Saeed
但是,当像"anna alàs i jové"
这样的资本化名称时,它将其转换为"Anna AlàS I Jové"
S
不应是à
之后的资本。另外,我们可以有一个解决方案,其中它可以用单个字母忽略单词。
大写第一个字母的最佳方法是:
function toTitleCase(str)
{
return str.replace(/wS*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
console.log(toTitleCase("anna alàs i jové"));
编辑:
包括以您可以使用的德语字符开始的单词:
function toTitleCase1(str)
{
return str.replace(/[wxc0-xd6xd8-xf6xf8-xff]+/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
console.log(toTitleCase1("ànna alàs i jové"));
请尝试。
var text = "anna alàs i jové";
String.prototype.initCap = function() {
return this.toLowerCase().replace(/(?:^|s)[a-z]/g, function(m) {
return m.toUpperCase();
});
};
if (/^[a-zA-Z0-9- ]*$/.test(text) == false) {
//Inint cap
console.log(text.initCap());
//Init cap if length >1
var temp = text.split(" ");
var t = "";
temp.map(function(value){
if(value.length > 1){
t += value.initCap() + " ";
}else{
t += value + " ";
}
});
console.log(t);
}
这将解决您的问题。http://plnkr.co/edit/7ggknrw7nwclmpn0y4az?p=preview
return str.toLowerCase().replace(/b(w)/g, s => s.toUpperCase());