You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

句子大小写转换函数无法识别多语言字符的问题求助

解决sentenceCase函数支持多语言Unicode字符的问题

问题核心在于JavaScript正则的Unicode支持逻辑:你使用的\p{L}\p{M}属于Unicode属性转义语法,但JS正则默认不识别这类规则,必须添加u修饰符开启Unicode模式才能生效。另外原正则的[\p{L}\p{M}]会匹配所有字母(包括大写),应该限定为匹配小写Unicode字母,避免无效匹配。

修改后的函数代码

function sentenceCase(input, lowercaseBefore) {
    input = (input === undefined || input === null) ? '' : input;
    if (lowercaseBefore) { 
        input = input.toLowerCase(); 
    }
    // 添加u修饰符启用Unicode模式,用\p{Ll}匹配小写Unicode字母,\p{M}匹配标记字符
    return input.toString().replace(/(^|\. *)([\p{Ll}\p{M}])/gu, function (match, separator, char) {
        return separator + char.toUpperCase();
    });
}

关键修改说明

  • 正则末尾添加u修饰符:开启Unicode模式,让\p{Ll}和\p{M}这类Unicode属性转义语法生效。
  • 替换[\p{L}\p{M}]为[\p{Ll}\p{M}]:\p{Ll}专门匹配小写的Unicode字母,确保只对需要大写的小写字符进行转换,避免匹配已大写的字母。

测试示例

输入:hej, æøå. hej igen
输出:Hej, æøå. Hej igen

输入:hello, one two. three four
输出:Hello, one two. Three four

内容的提问来源于stack exchange,提问作者Dmiich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:20:26