我有这个文字
file1 = "</span>foo"
隐藏在&#34;&gt;&#34;和&#34; f&#34;是一个零宽度的连接器(\ u200D)
我想将其更改为正常空间(\ u0020)
这就是我尝试过的事情
file1 = file1.gsub(/\u200D/, ' ')
这是结果
file2.puts file1 #=> </span>?foo
出于某种原因,它在那里插入了一个问号。即使我不用任何东西替换它而只是做
file1.puts file2
它仍然带有问号(如果您从一个文件中取出文本并输出到另一个文件,它似乎只会出现问号)
我希望最终结果是
file1.puts file2 #=> </span> foo
我没有尝试使用ruby解析html
答案 0 :(得分:4)
200d不是稀薄的空间,但是&#34;零宽度的连接器&#34;,它具有非类似空间的属性。 http://www.fileformat.info/info/unicode/char/200d/index.htm
首先,基本的正则表达式对我有用:
irb(main):042:0> "\u200d".gsub(/\u200d/,"xxx")
=> "xxx"
[[:space:]]没有(也没想到,因为它的石器时代POSIX东西......而且200d不是空间):
irb(main):003:0> "\u200d".gsub(/[[:space:]]/,"xxx")
=> ""
\ u200d不算作分隔符:空格:
irb(main):005:0> "\u200d".gsub(/\p{Cf}/,"xxx")
=> ""
但它匹配其他:格式
irb(main):006:0> "\u200d".gsub(/\p{Cf}/,"xxx")
=> "xxx"