在我的XML文件中,有如此屏幕截图所示的unicode换行符。 使用此链接查看屏幕截图
“思想”之后的两个点。是换行符。我用Google搜索并尝试了几乎所有我知道用红宝石(1.8)替换它们但没有任何运气。
这是我的代码(使用不同的unicodes尝试),也许有人可以帮助我。
def formatedBody
t = self.body.gsub("\u000a","<br/>")
t = t.gsub("\u000d","<br/>")
t = t.gsub("\u0009","<br/>")
t = t.gsub("\u000c","<br/>")
t = t.gsub("\u0085","<br/>")
t = t.gsub("\u2028","<br/>")
t = t.gsub("\u2029","<br/>")
t = t.gsub(/0A\0A/u,"<br/>")
return t
end
答案 0 :(得分:4)
两个0x0A
值是换行符的十六进制表示形式。常规ol'ASCII换行,字符串中的AKA "\n\n"
。
所以,t = t.gsub(/\n/, "<br/>")
应该有用。
t = "foo\u000d\u0009\u000c\u0085\u2028\u2029\nbar"
p t
t = t.gsub(/\u000d|\u0009|\u000c|\u0085|\u2028|\u2029|\n/,"<br/>")
puts t
您可以将OR'd字符列表替换为:
t = t.gsub(/[\u000d\u0009\u000c\u0085\u2028\u2029\n]/,"<br/>")
无论哪种方式,输出都会如下:
"foo\r\t\f\u2028\u2029\nbar"
foo<br/><br/><br/><br/><br/><br/><br/>bar
你的原因
t = t.gsub(/0A\0A/u,"<br/>")
不起作用是正则表达式不正确。
t = t.gsub(/\x0A/,"<br/>")
是另一种定义方式:
t = t.gsub(/\n/,"<br/>")
答案 1 :(得分:0)
我有同样的问题(使用ruby 1.8.7),我只需用以下方法解决:
t = t.gsub(/\xE2\x80(?:\xA8|\xA9)/, '<br/>')