2017-03-07 55 views
-1

我想知道爲什麼反斜槓'\'不能正常工作。在紅寶石我需要一個反斜槓,但它給了我三個

@hash["zebra"] = "African land animal with stripes" 
@hash["fish"] = "aquatic animal" 
@hash["apple"] = "fruit" 

def printable 
    hashs = @hash 
    words = Array.new 
    hashs.each {|key, value| 
     word = '['+key+'] '+ '\\"' + value +'\\"\\n' 
     words << word 
    } 
    words.sort.join("") 

end 

我希望 「[蘋果] \」 水果\ 「\ n [魚] \」 水產動物\ 「\ n [斑馬] \」 非洲陸地動物條紋\ 「」

但是我得到的是 「[apple] \\」fruit \\「\ n [fish] \\」水生動物\\「\ n [斑馬] \\」帶條紋的非洲陸地動物\「\ n 「

所以它給了我三個反斜槓而不是一個。爲什麼會發生?

+0

你確定你沒有得到你想要的:'puts printable#=> [apple] \「fruit \」\ n [魚] \「水生動物\」\ n [斑馬] \「非洲陸地動物與條紋\「\ N'?三個反斜槓中的前兩個是單個反斜槓字符;第三個反斜槓轉義下面的字符。 –

+0

是的..我不知道爲什麼它不起作用TT – gin85

回答

1

在ruby中,單引號中的內容是純字符串沒有特殊功能,所以在使用單引號時需要更改內容,否則你會用更好的方式使用雙引號更正確的ruby風格

@hash = Hash.new 
@hash["zebra"] = "African land animal with stripes" 
@hash["fish"] = "aquatic animal" 
@hash["apple"] = "fruit" 

def printable 
    hashs = @hash 
    words = Array.new 
    hashs.each {|key, value| 
     word = '['+key+'] '+ '"' + value +'"'+"\n" #use single quote 
     word = "["+key+"] "+ "\"" + value +"\"\n" #use double quote 
     words << word 
    } 
    words.sort.join("") 
    puts words 
end 
+0

謝謝!我嘗試過,它的工作原理。一件事是我剛剛意識到我需要擺脫最後的'n'。所以我需要價值後,「\」,但當我嘗試「\」\「它甚至不會運行...如果我只想添加\」\最後,我應該如何改變? – gin85

+0

@ gin85 ,「\」\\「,我想你應該學會知道雙引號和單引號之間的區別是什麼 – Tsao

+0

我試過」\「\\」,但是在最後加了兩個反斜槓而不是一個......我學會了如果兩個反斜槓在一起,後來一個逃脫,但它不工作.. – gin85

0

因爲一些字符需要時,他們在雙引號",在這裏他們的一些名單逃脫:

\ 「 - 雙引號(」)

\ - 單反斜線()

\一 - 鈴/警報(播放一段提示音)

\ b - 退格(刪除前一字符,光標移回一個位置)

\ r - 回車(移動光標到行的開頭)

\ N - 換行符(移動光標到下一行)

\ S - 空間()

\噸 - 標籤()

+0

換句話說,用單引號(''\ n''),意思是反斜槓n,但是用雙引號('「\ n」')用換行符替換轉義字符。 –

+0

非常感謝你! :-) – gin85