为什么';这个转义字符在Ruby中不起作用吗?

为什么';这个转义字符在Ruby中不起作用吗?,ruby,file-io,escaping,Ruby,File Io,Escaping,代码: 奇怪的是,实际上正在打印\n。。。这里怎么了?您使用的是单引号。单引号中唯一允许的转义序列是\的\和\'的\。使用双引号,\n将按预期工作。Ruby中的单引号字符串比双引号字符串更具“文字性”;变量不求值,大多数转义字符不起作用,除了\\和\'分别包含文字反斜杠和单引号 双引号是您想要的: file.write 'objectclass: groupOfUniqueNames\n' 单引号字符串中只允许两个转义序列是\'(对于单引号)和\(对于单反斜杠)。如果要使用其他转义序列,如\n

代码:


奇怪的是,实际上正在打印\n。。。这里怎么了?

您使用的是单引号。单引号中唯一允许的转义序列是
\
\
\'
\
。使用双引号,
\n
将按预期工作。

Ruby中的单引号字符串比双引号字符串更具“文字性”;变量不求值,大多数转义字符不起作用,除了
\\
\'
分别包含文字反斜杠和单引号

双引号是您想要的:

file.write 'objectclass: groupOfUniqueNames\n'
单引号字符串中只允许两个转义序列是
\'
(对于单引号)和
\
(对于单反斜杠)。如果要使用其他转义序列,如
\n
(用于换行符),则必须使用双引号字符串

因此,这将起作用:

file.write "objectclass: groupOfUniqueNames\n"
虽然我个人会在这里简单地使用
put
,这已经添加了一个新行:

file.write "objectclass: groupOfUniqueNames\n"

事实上,甚至连``都不起作用。(顺便说一句,这意味着您不能有一个以奇数个反斜杠结尾的单引号字符串。)@Jörg W Mittag:请注意,
'\\'.size==1
,这是一个奇数。当然可以。我真蠢。我在IRB中输入了
“\\'”
,然后返回
“\\”
,我想:嘿,我放了两个反斜杠,两个反斜杠出来了,所以它们没有逃脱。但是,当然,它们是以转义形式打印回来的。哼!那么为什么我真的想要使用单引号字符串呢?这只是为了避免转义字符而使用的简写方法吗?如果您不想插值,它也很有用。例如:
“插值”看起来是这样的:{@variable}
,它是逐字打印的,与
相反,@foo的值是{@foo}
,其中,
@foo
被计算和插入。@Zombies的单引号字符串在Ruby端需要的工作更少。当您知道不需要变量插值之类的东西时,它们的使用速度会更快一些。
file.puts 'objectclass: groupOfUniqueNames'