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

如何移除文本中的Zero width joiner及其他零宽隐形字符?

如何移除零宽连接符(Zero Width Joiner)这类隐形字符?

你遇到的问题确实挺头疼:文本里藏着零宽连接符(‍),在UI界面里完全看不见,但一发短信到iPhone上就变成问号,而且用text.gsub("‍", "")的方法根本删不掉它。

问题出在你匹配的是HTML实体字符串‍,但实际文本里的字符已经是对应的Unicode编码(U+200D)了,所以直接替换实体自然起不到效果。


更新:

补充@matt的答案,Unicode里其实不止零宽连接符,还有几种常见的零宽隐形字符,都可能导致类似的显示问题:

  • U+200B 零宽空格(zero width space)
  • U+200C 零宽非连接符(zero width non-joiner)
  • U+200D 零宽连接符(zero width joiner)
  • U+FEFF 零宽不换行空格(zero width no-break space)

想要一次性清理这些隐形字符,用正则表达式是最方便的方案,代码如下:

text = text.gsub(/[\u200B\u200C\u200D\uFEFF]/, '')

(注:原代码里的/[​-‍]/虽然能生效,但里面包含的隐形字符会让正则可读性极差,换成Unicode转义写法更稳妥,也方便后续维护)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:28