Sam*_*dhe 4 ruby string ruby-on-rails-4
我的文本包含‍ 零宽度连接符,该连接符在 UI 中不可见,但是当我将其作为短信发送时,它?在 iPhone 中显示为问号。
我尝试使用 gsub 删除它,但它没有被删除。
text.gsub("&zwj\;", "")
Run Code Online (Sandbox Code Playgroud)
有什么办法可以从文本中删除这种不可见的字符吗?
更新:
除了@matt的回答
Unicode 具有以下零宽度字符:
要在文本中替换它们,您可以使用简单的正则表达式:
text = text.gsub(/[\u200B-\u200D\uFEFF]/, '')
Run Code Online (Sandbox Code Playgroud)
该字符串‍是零宽度连接符的 HTML 字符实体。当 Web 浏览器看到它时,它会将其替换为实际的零宽度连接符,但就 Ruby 而言,它只是一个 5 个字符的字符串。
你想要做的是指定实际的零宽度连接符。它的代码点为 U+200D,因此您可以像这样使用它,使用 Ruby\xe2\x80\x99s Unicode 转义:
\n\ntext.gsub("\\u200D", "")\nRun Code Online (Sandbox Code Playgroud)\n\n这应该删除零宽度连接符,而不是查找‍原始代码正在执行的字符串。