javascript - 如何在连字符后使用 Jquery 将每个单词大写?

标签 javascript jquery uppercase capitalize

我想将输入中的所有单词大写(使用 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/

相关文章:

Javascript 排序不正确排序

javascript - Acrobat:如何使用 Javascript 插入简单文本?

javascript - 从要作为函数参数传递的数据库值中删除撇号

javascript - 获取 ISO 字符串格式的 2 个日期相减后的天数

javascript - jQuery - 如何动画滚动到元素并在顶部添加 100px

php - 在字符串中查找第一个大写字符的最快方法

javascript - jquery:滚动时滑入和滑出框

javascript - 如何隐藏具有包含某些值的 TD 的表行

c# - MySQL 子查询以大写形式显示

SQL Server : Make all UPPER case to Proper Case/Title Case