ruby - 替换字符串中的反斜杠
问题描述
我需要将所有反斜杠减半。
body = '\\u001F\\x8B\\b\\u00003g#\\\\\\u0002\\'
我需要这样的输出:
'\u001F\x8B\b\u00003g#\\\u0002\'
我试过这个:
body.gsub("\\\\\\", "\\")
\\ -> \ (ok)
\\\\ -> \\ (ok)
\\\\\\ > \ (not ok)
我读过 ruby 以某种方式解析字符串两次,也许它以某种方式与我不想要的输出有关。有任何想法吗?
解决方案
可能发生的情况是,您正在使用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\\"
换句话说,字符串可能已经按照您想要的方式格式化,您只是在没有检查信息的情况下看不到它。
推荐阅读
- java - 环境搭建安卓手机应用
- python - Dash 数据表下拉过滤器
- python - Cython 选项 --embed 是否仅在内部使用 Python,并且没有性能提升?
- translation - 什么是编程中的纯翻译和纯模拟?
- android - 更改字体粗细不会影响任何内容。(安卓,安卓工作室)
- watson-studio - 如何在 Watson Studio Modeler Flow 中预测时间序列的动态数量
- laravel - 如何使用“Laravel Follow”解决此错误
- javascript - 如何实现类似于 Slither.io 的相机/运动风格?
- rust - 在 NEAR 区块链上使用合约名称调用 nft_transfer?
- javascript - 消息收集器响应其他人的消息