Javascript 当单词包含特殊字符时,将每个单词的首字母大写
我用这一行大写每个单词的第一个字母Javascript 当单词包含特殊字符时,将每个单词的首字母大写,javascript,regex,Javascript,Regex,我用这一行大写每个单词的第一个字母 text.replace(/\b\w^\w/g, l => l.toUpperCase()); 它成功地将正常单词大写,例如asif-saeed->asif-saeed 但是当把名字大写时,比如说“anna alás i jové”它会把它转换成“anna alás i jové”s不应该在之后大写。此外,我们可以有一个解决方案,它忽略了单一字母的单词 第一个字母大写的最佳且最简单的方法是: function toTitleCase(str) {
text.replace(/\b\w^\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(/\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é"));
这会解决你的问题。
请试试这个
var text=“anna alás i jové”;
String.prototype.initCap=函数(){
返回此.toLowerCase().replace(/(?:^ |\s)[a-z]/g,函数(m){
返回m.toUpperCase();
});
};
如果(/^[a-zA-Z0-9-]*$/。测试(文本)=假){
//小帽
log(text.initCap());
//如果长度>1,则初始化上限
var temp=文本分割(“”);
var t=“”;
温度映射(函数(值){
如果(value.length>1){
t+=value.initCap()+“”;
}否则{
t+=值+“”;
}
});
控制台日志(t);
}
当第一个字母是特殊字符时,它会失败,例如“nna alás i jové”。它返回“Nna Alás I Jové”这是错误的N不应该是大写字母我错过了这个例子现在我编辑了代码你可以检查它不工作这是这个“anna Alás I Jové”的结果
return str.toLowerCase().replace(/\b(\w)/g, s => s.toUpperCase());