繁体   English   中英

Ruby 字符串中的单个反斜杠

[英]Single Backslash in Ruby String

我正在使用红宝石 2.7.5。 我正在尝试将^~\&分配给一个变量。 我想要一个只有一个反斜杠的字符串。 我尝试了不同的东西,但没有一个能给我想要的结果。

attempt normal string
irb(main):049:0> "^~\&"
=> "^~&"

thinking one \ is escaped
irb(main):050:0> "^~\\&"
=> "^~\\&"

thinking string literal will do
irb(main):052:0> '^~\&'
=> "^~\\&"

thinking one \ is skiped on literal 
irb(main):053:0> '^~\\&'
=> "^~\\&"
 
trying how 3 backward slashes will look
irb(main):054:0> '^~\\\&'
=> "^~\\\\&"

some more attempts on how backslash works, it seems like we only get even number of back slashes
irb(main):056:0> "^~\\\&"
=> "^~\\&"
irb(main):057:0> "^~\\\\&"
=> "^~\\\\&"
irb(main):058:0> "^~\\\\\&"
=> "^~\\\\&"

same thing when we use single quote
irb(main):061:0> '^~\\&'
=> "^~\\&"
irb(main):062:0> '^~\\\&'
=> "^~\\\\&"
irb(main):063:0> '^~\\\\&'
=> "^~\\\\&"

我还查看了单引号字符串与双引号字符串中的反斜杠

根据 StackOverflow 的建议,我尝试了他们的示例,但结果并不相似。

irb(main):055:0> 'escape using "\\"'
=> "escape using \"\\\""

所以你能帮我解决一下我怎样才能得到一个只有一个反斜杠的字符串吗? 另外,我是否缺少任何字符串概念?

您已经在第二个和第三个示例中正确完成了它。 问题是您没有正确检查结果。 您依赖于字符串定义的控制台输出,它为您提供了一个转义字符串。 (它基本上对值运行#inspect ,其中包括/添加转义字符。)

要查看真实结果(没有转义),请使用#puts

puts('^~\&')
^~\&
=> nil
puts("^~\\&")
^~\&
=> nil

在单引号或双引号字符串中使用两个反斜杠。 例如:

ruby -e "s = '^~\\&'; puts s;"
^~\&

ruby -e 's = "^~\\&"; puts s;'
^~\&

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM