首页 > 解决方案 > 替换字符串中的反斜杠

问题描述

我需要将所有反斜杠减半。

body = '\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\'

我需要这样的输出:

'\u001F\x8B\b\u00003g#\\\u0002\'

我试过这个:

body.gsub("\\\\\\", "\\")
\\ -> \ (ok)
\\\\ -> \\ (ok)
\\\\\\ > \ (not ok)

我读过 ruby​​ 以某种方式解析字符串两次,也许它以某种方式与我不想要的输出有关。有任何想法吗?

标签: rubystring

解决方案


可能发生的情况是,您正在使用p或 usinginspect打印字符串,并且正常打印字符串会给您所期望的。

body = '\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\'
p body #> "\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\"
puts body.inspect #> "\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\"
puts body #> \u001F\x8B\b\u00003g#\\\u0002\

如果您使用的是 IRB,只需键入变量名即可自动调用检查,例如

irb(main):001:0> body = '\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\'
irb(main):002:0> body
=> "\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\"

换句话说,字符串可能已经按照您想要的方式格式化,您只是在没有检查信息的情况下看不到它。


推荐阅读