如何在Ruby中打印转义字符?

4

我有一个包含转义字符的字符串:

word = "x\nz"

我希望将其作为x\nz打印出来。

然而,puts word给了我:

x
z

如何让puts word输出x\nz而不是创建一个新行?

2个回答

9

使用String#inspect方法。

puts word.inspect #=> "x\nz"

或者只是p

p word #=> "x\nz"

1

我有一个包含转义字符的字符串:

不,你没有。你有一个包含换行符的字符串。

如何让puts word输出x\nz而不是创建新行?

最简单的方法就是一开始就按照你想要的格式创建字符串:

word = 'x\nz'
# or 
word = "x\\nz"

如果不可能的话,你可以按照自己的方式翻译这个字符串:
word = word.gsub("\n", '\n')
# or
word.gsub!("\n", '\n')

你可能会想要做类似这样的事情:

puts word.inspect
# or
p word

不要这样做!#inspect不能保证具有任何特定格式。它唯一的要求是返回一个适合调试的可读字符串表示。您永远不应该依赖于#inspect的内容,您唯一应该依赖的是它是可读的。


1
使用#inspect有什么问题?文档中说:“返回一个带引号的可打印版本的str,其中特殊字符已转义。”这听起来正是OP想要的,也听起来是“格式”的完全合理的定义。您能澄清一下您的反对意见吗? - preferred_anon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接