2017-03-07 1 views
-1

Ich frage mich, warum der Backslash '\' nicht gut funktioniert.in Ruby Ich brauche einen Schrägstrich, aber es gibt mir drei

@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 

Ich erwarte "[Apfel] \" Obst \ "\ n [Fisch] \" Wassertier \ "\ n [Zebra] \" African Landtier mit Streifen \ ""

aber was ich bekam, war "[Apfel] \\" Frucht \\ "\ n [Fisch] \\" Wassertier \\ "\ n [Zebra] \\" Afrikanisches Landtier mit Streifen \\ "\ n "

so gibt es mir drei Schrägstrich statt einer. Warum passiert das?

+0

Sind Sie sicher, dass Sie nicht bekommen, was Sie wollen: 'puts druckbare # => [Apfel] \" Frucht \ "\ n [Fisch] \" Wassertier \ "\ n [Zebra] \" Afrikanisches Landtier mit Streifen \ "\ n'? Die ersten zwei von drei umgekehrten Schrägstrichen sind ein einzelner umgekehrter Schrägstrich; Der dritte umgekehrte Schrägstrich entkommt dem folgenden Zeichen. –

+0

ja .. ich weiß nicht, warum es nicht funktioniert TT – gin85

Antwort

1

In Ruby, der Inhalt in einfachen Anführungszeichen ist eine reine Zeichenfolge keine besondere Funktion, so müssen Sie den Inhalt ändern, wenn einzelne Anführungszeichen verwenden, oder Sie verwenden den besseren Weg, verwenden doppelte Anführungszeichen ist richtiger Rubin Stil

@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

10 danke! Ich habe es versucht und es funktioniert. Eine Sache ist, dass ich gerade realisiert habe, dass ich das letzte 'n' loswerden muss. also was ich brauche nach Value ist das \ "\. aber wenn ich es probiere" \ "\" es läuft sogar nicht ... wenn ich nur \ "am ende hinzufügen möchte, wie soll ich das ändern? – gin85

+0

@ gin85 , "\" \\ ", ich denke, dass Sie wissen sollten, was zwischen doppeltem Zitat und einfachem Zitat – Tsao

+0

ist, versuchte ich" \ "\\", aber es addiert zwei rückseitigen Schrägstrich am Ende anstelle von einem ... ich lernte wie wenn zwei Backslash zusammen sind, später ist man entkommen, aber es funktioniert nicht .. – gin85

0

Da einige Zeichen zu entkommt brauchen, wenn sie in doppelte Anführungszeichen " und hier die einige Liste von ihnen sind:

\ "- doppelte Anführungszeichen (")

\ - Einzelbackslash()

\ a - glocken/alert (spielt eine Ton)

\ b - Backspace (vorherige Zeichen löscht, verschiebt Cursor um eine Position zurück)

\ r - Wagenrücklauf (bewegt den Cursor an den Anfang der Zeile)

\ n - Raum()

\ t - - neue Zeile

\ s (Cursor zur nächsten Zeile bewegt) Lasche()

+0

Oder in anderen Worten mit einfachen Anführungszeichen (''\ n'') Jus bedeutet Backslash n, aber in Anführungszeichen (' "\ n" ') ist ein Escape-Zeichen, das durch einen Zeilenumbruch ersetzt wird. –

+0

vielen dank! :-) – gin85

Verwandte Themen