我想将输入中的所有单词大写(使用 keyup 函数)来格式化输入的名称。
例子:
李四 => 李四
约翰·多伊 => 约翰·多伊
汤米李 => 汤米李
目前,我使用这段代码:
$("input").keyup(function() {
var cp_value= ucwords($(this).val(),true) ;
$(this).val(cp_value );
});
function ucwords(str,force){
str=force ? str.toLowerCase() : str;
return str.replace(/(\b)([a-zA-Z])/g,
function(firstLetter){
return firstLetter.toUpperCase();
});
}
但如果单词包含重读字符,则以下字母也大写:John Döe => John DöE。
获得我想要的东西的最佳解决方案是什么?
谢谢
最佳答案
问题出在单词边界上,如果您手动设置边界就可以了
function ucwords(str,force){
str=force ? str.toLowerCase() : str;
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
function(firstLetter){
return firstLetter.toUpperCase();
});
}
并为重音字符添加 Unicode
关于javascript - 如何在连字符后使用 Jquery 将每个单词大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874626/