我正在使用这一行来大写每个单词的所有第一个字母
text.replace(/\b\w^\w/g, l => l.toUpperCase());
它成功地将普通单词大写,例如asif saeed
- > Asif Saeed
但是在将"anna alàs i jové"
这样的名称大写时,将其转换为"Anna AlàS I Jové"
S
不应该是à
之后的首都。另外我们可以有一个解决方案,它忽略单个字母的单词。
答案 0 :(得分:1)
将第一个字母表大写的最佳和最简单的方法是:
function toTitleCase(str)
{
return str.replace(/\w\S*/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(/[\w\xc0-\xd6\xd8-\xf6\xf8-\xff]+/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
console.log(toTitleCase1("ànna alàs i jové"));
答案 1 :(得分:0)
请试一试。
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);
}

答案 2 :(得分:-1)
这将解决您的问题。 http://plnkr.co/edit/7ggKNRw7nwCLmPN0y4Az?p=preview
return str.toLowerCase().replace(/\b(\w)/g, s => s.toUpperCase());