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

如何在JavaScript中仅去除大写字母的重音符号?

在JavaScript中仅去除大写字母重音符号的高效实现方式

当然有更高效的实现方式,不需要逐个字符检测。可以结合Unicode属性正则和字符串归一化来精准处理大写带重音的字符,同时完全保留小写字母的重音。

核心实现代码

function removeUppercaseAccents(str) {
  // 匹配所有Unicode大写字母(包含带重音的各类大写字符)
  return str.replace(/\p{Lu}/gu, uppercaseChar => {
    // 将字符分解为基础字符 + 独立重音标记
    return uppercaseChar.normalize('NFD')
      // 移除所有Unicode组合重音标记
      .replace(/[\u0300-\u036f]/g, '');
  });
}

// 测试验证
const testString = 'ÀÎÏÔàîïôÉÈÀàÊê';
console.log(removeUppercaseAccents(testString)); // 输出:AIIOàîïôEEAàÊê

方案优势

  • 覆盖范围广:\p{Lu}是Unicode属性类,能匹配所有语言的大写字母(不止法语的À、Î等),无需手动枚举所有带重音的大写字符,避免遗漏。
  • 效率更高:仅对匹配到的大写字符做处理,小写字符直接跳过,比遍历字符串中每一个字符的性能更好。
  • 逻辑简洁:利用normalize('NFD')将带重音的字符分解为"基础字符+重音标记"的组合,再通过正则移除重音标记,原理清晰易懂。

补充说明

如果只需要针对特定语言的大写重音字符(比如仅处理法语的大写重音),可以将正则调整为更具体的字符范围,但\p{Lu}的通用方案在大多数场景下更实用,能适配多语言场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:34:57