如何从文本中删除零宽度 space 字符
How to remove zero-width space characters ‍ from the text
我有包含 ‍
Zero width joiner 的文本,在 UI 中不可见,但是当我将其作为短信发送时,它显示为 ?
问题在iPhone.
中标记
我尝试使用 gsub 删除它,但没有被删除。
text.gsub("&zwj\;", "")
有什么方法可以从文本中删除这种不可见字符吗?
更新:
除了@matt的回答
Unicode 具有以下零宽字符:
- U+200B 零宽度space
- U+200C 零宽度非连接器 Unicode 代码点
- U+200D 零宽度连接符 Unicode 代码点
- U+FEFF 零宽度不间断space Unicode 代码点
要在文本中替换它们,您可以使用简单的正则表达式:
text = text.gsub(/[\u200B-\u200D\uFEFF]/, '')
"blah blah blah".gsub(/[^[:print:]]/, '')
应该删除所有不可打印的字符。
字符串 ‍
是零宽度连接符的 HTML 字符实体。当 Web 浏览器看到它时,它会将其替换为实际的零宽度连接符,但就 Ruby 而言,它只是一个 5 个字符的字符串。
您要做的是指定实际 零宽度连接符。它有代码点 U+200D,所以你可以像这样使用它,使用 Ruby 的 Unicode 转义:
text.gsub("\u200D", "")
这应该删除零宽度连接字符,而不是查找您的原始代码正在执行的字符串 ‍
。
我有包含 ‍
Zero width joiner 的文本,在 UI 中不可见,但是当我将其作为短信发送时,它显示为 ?
问题在iPhone.
我尝试使用 gsub 删除它,但没有被删除。
text.gsub("&zwj\;", "")
有什么方法可以从文本中删除这种不可见字符吗?
更新:
除了@matt的回答
Unicode 具有以下零宽字符:
- U+200B 零宽度space
- U+200C 零宽度非连接器 Unicode 代码点
- U+200D 零宽度连接符 Unicode 代码点
- U+FEFF 零宽度不间断space Unicode 代码点
要在文本中替换它们,您可以使用简单的正则表达式:
text = text.gsub(/[\u200B-\u200D\uFEFF]/, '')
"blah blah blah".gsub(/[^[:print:]]/, '')
应该删除所有不可打印的字符。
字符串 ‍
是零宽度连接符的 HTML 字符实体。当 Web 浏览器看到它时,它会将其替换为实际的零宽度连接符,但就 Ruby 而言,它只是一个 5 个字符的字符串。
您要做的是指定实际 零宽度连接符。它有代码点 U+200D,所以你可以像这样使用它,使用 Ruby 的 Unicode 转义:
text.gsub("\u200D", "")
这应该删除零宽度连接字符,而不是查找您的原始代码正在执行的字符串 ‍
。