Ruby中的特殊字符(字符用反斜杠转义)

时间:2017-03-23 19:59:03

标签: ruby special-characters chars

如何将带有特殊字符的字符串转换为实际的特殊字符?

例如,如果我有这个:

s = "hello\\nworld"

puts的输出自然是这样的:

> puts s
hello\nworld

但是如何转变为这个?

hello
world

换句话说,是否有任何功能可以解决后退的字符?

修改

正如@Eric Duminil建议的那样,到目前为止找到了最佳答案Best way to escape and unescape strings in Ruby?

3 个答案:

答案 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 = "\""等输入。