2016-04-15 9 views
1

Ich bin versucht, eine Zeichenfolge zu erstellen mit:Ruby-String-Struktur

puts '["#{follower.screen_name}"]' 

ich die Ausgabe

["DailySanJose"] 

wo DailySanJose ist der Wert von follower.screen_name sein will. Der aktuelle Ausgang ist jedoch

["#{follower.screen_name}"] 

Jede Hilfe sehr geschätzt.

+0

Frage ist nicht klar. 'puts' erzeugt keine Zeichenkette. Möchten Sie eine Zeichenfolge erstellen oder ausgeben? – sawa

Antwort

4

Interpolation (#{}) funktioniert nur in doppelt zitierten Strings.

Versuchen Sie folgendes:

puts "[\"#{follower.screen_name}\"]" 

Ich bin auch die doppelten Anführungszeichen in der Zeichenfolge von sie mit den \ (Backslash) Zeichen zu entkommen.

-1

bearbeiten

können Sie es auf diese Weise tun mit doppelten Anführungszeichen

puts %{["#{follower.screen_name}"]} 
+1

Dies funktioniert, aber es erzeugt nicht die gewünschte Ausgabe, die laut OP doppelte Anführungszeichen enthalten muss. – Linuxios

+0

@Linuxios, Sie sagen: "Das wird funktionieren, aber es funktioniert nicht." :-) Strike "wird funktionieren, aber es"? –

+0

@CarySwoveland: Guter Punkt ... zu spät, um jetzt zu bearbeiten: /. – Linuxios

3

Sie ein% Q nicht zu entkommen Anführungszeichen kümmern verwenden könnte haben

wie

%Q(["#{follower.screen_name}"]) 

Dies wird die Zitate für Sie au entkommen tomatisch und tun Sie die String-Interpolation, so müssen Sie sich nicht selbst darum kümmern.

1

Wenn Sie versuchen, so etwas wie JSON Ausgabe zu machen:

require 'json' 

test = "DailySanJose" 

JSON.dump([ test ]) 
# => "[\"DailySanJose\"]" 

Der hier Vorteil ist dies für Strings wie The "Test" Konten, die unter Angabe Doppel erfordert. Lass dich nicht von dem \" Teil verwechselt werden, wie beim Drucken, dass es kommt genau so, wie sie ist:

puts JSON.dump([ test ]) 
# => ["DailySanJose"] 

Es gibt auch ein paar andere einfache Möglichkeiten:

[ test ].inspect 
# => "[\"DailySanJose\"]" 
+0

Das funktioniert. Es ist jedoch erwähnenswert, dass die Ausgabe von "inspect" nicht als zuverlässig angesehen wird und für nichts außer Debugging verwendet werden sollte. Die Verwendung von JSON ist viel besser. – Linuxios

+0

@Linuxios Wie ist "inspect" nicht zuverlässig? Es ist grundlegend für Ruby und wenn einfache Strings verwendet werden, funktioniert es großartig. Ich stimme zu, dass JSON ein besserer Aufruf ist, wenn das angestrebte Ziel ist, da die Ausgabe wesentlich standardisierter ist. – tadman

+0

Ich weiß nicht über die Zuverlässigkeit der Methode, aber pp würde eine viel schönere String-Darstellung einer größeren Datenstruktur drucken. –

0

Um die Optionen abzurunden , können Sie auch ein heredoc verwenden:

howdy = "hi" 
puts <<_ 
["#{howdy}"] 
_ 
    # ["hi"] 
0

Sie puts verwenden können '[ " '+ follower.screen_name +'"]'