如何将带有特殊字符的字符串转换为实际的特殊字符?
例如,如果我有这个:
s = "hello\\nworld"
puts
的输出自然是这样的:
> puts s
hello\nworld
但是如何转变为这个?
hello
world
换句话说,是否有任何功能可以解决后退的字符?
修改
正如@Eric Duminil建议的那样,到目前为止找到了最佳答案Best way to escape and unescape strings in Ruby?
答案 0 :(得分:2)
你最好的办法是做一些字符串替换。
s = "hello\\nworld"
puts s.gsub("\\n", "\n")
# >> hello
# >> world
这种方法的缺点是你必须明确地列出/处理你需要的所有特殊字符。
答案 1 :(得分:0)
你插入\,\ 使用1个反斜杠而不是两个:
{{1}}
答案 2 :(得分:-2)
如果您的字符串来自受信任的来源,则可以使用eval
:
s = "hello\\nworld"
eval("\"#{s}\"") # => "hello\nworld"
请注意,这允许任意代码执行:
s = "\"; loop { }; \""
eval("\"#{s}\"") # => infinite loop
此功能也不适用于s = "\""
等输入。