如何将带有特殊字符的字符串转换为实际的特殊字符[重复]

问题描述 投票:2回答:3

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

例如,如果我有这个:

s = "hello\\nworld"

puts的输出自然是这个:

> puts s
hello\nworld

但是我如何将其转换为这个?

hello
world

换句话说,有没有对反斜杠字符进行转义的功能?

ruby char special-characters
3个回答
2
投票

您最好的选择是进行一些字符串替换。

s = "hello\\nworld"
puts s.gsub("\\n", "\n")
# >> hello
# >> world

此方法的缺点是,您必须显式列出/处理需要取消转义的所有特殊字符。


0
投票

您通过\内插\\,使用一个反斜杠而不是两个:

s = "hello\nworld"
puts s 
#=> hello
    world

-3
投票

如果您的字符串来自受信任的来源,则可以使用eval

s = "hello\\nworld"    
eval("\"#{s}\"") # => "hello\nworld"

注意,这允许任意代码执行:

s = "\"; loop { }; \""
eval("\"#{s}\"") # => infinite loop

而且这对于s = "\""之类的输入也不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.