簡體   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