2016-03-23 6 views
-1

Ich versuche \1 in einer Zeichenfolge zu schreiben, aber ich kann es nicht tun. Ich würde mich freuen, wenn mir jemand mit diesem seltsamen Verhalten helfen würde. Here ist ein Beispiel mit einigen Erklärungen.Wie schreibe ich 1 in Zeichenfolge

EDIT: Hinzufügen von Beispielausgabe

puts "\1 <- null"

puts "\\1 <- slash one"

funktioniert!

aber "\1" "\\1"

im IRB-Befehlszeile liefert

"\1"

=> "\u0001

"\\1"

eingeben

+2

ist Bitte bearbeiten Sie Ihre Frage mit Ihrem Beispielcode und Erklärung. Links zu anderen Websites werden in der Regel schlecht, sodass diese Frage und die Antworten für zukünftige Besucher weniger nützlich sind. –

+0

Willst du wörtlich * Backslash eins *? – tadman

+0

Willkommen bei Stack Overflow. Bitte lesen Sie "[fragen]" und "[mcve]". Wir erwarten von Ihnen, dass Sie Ihren Code und den Nachweis der Mühe in die Frage selbst einfügen, nicht in einen Link zu einem anderen Ort. Links verrotten dann und lassen Ihre Frage für niemanden mehr sinnvoll erscheinen. –

Antwort

5

Es gibt ein paar Möglichkeiten, es zu bekommen:

"\\1" 
'\1' 
?\\ + ?1 

Denken Sie daran, dass der Weg, um es nach oben zeigen, ist immer "\\1", was bedeutet, Backslash, ein, das ist, was Sie wollen. Die Art und Weise zu wissen, dass dies richtig ist, ist puts zu verwenden:

puts "\\1" 
# => \1 

Innerhalb von Strings in doppelten Anführungszeichen, Schrägstriche erhebliche Bedeutung haben. \n bedeutet das Newline-Zeichen. In einzelnen Strings in Anführungszeichen sind das zwei Zeichen: Backslash und n.

Sie können dies selbst testen:

"\\1".chars 
# => ["\\", "1"] 

'\1'.chars 
# => ["\\", "1"] 

So können Sie sehen, Ruby zu interpretieren, dass als zwei Zeichen, nicht drei. Lassen Sie sich nicht durch den zweiten umgekehrten Schrägstrich in einer doppelt zitierten Zeichenfolge täuschen. So wird ein literaler Backslash dargestellt.

+0

Danke für Ihre Antwort! – mhz

+0

@mhz Lassen Sie mich wissen, wenn das funktioniert, und wenn es funktioniert, akzeptieren Sie es als Ihre Lösung. Erleichtert es anderen Menschen, diesen Weg zu finden. – tadman

0

Als ich in IRB und Typ bin \1 kehrte der Wert \u0001 die Art und Weise Ruby ist, den Charakter von darstellt.

Wenn ich schreibe puts('\1), ist das Verhalten in IRB und beim Ausführen ein Skript identisch. Ich sehe eine Karte Unicode-Zeichen wie folgt

0 0 
0 1 

Dies wird nicht die gleiche Leistung auf allen Plattformen (es hängt davon ab, wie Unicode ist angezeigt). Das ist wahrscheinlich der Grund, warum Sie im repl.it-Beispiel keine Ausgabe sehen.

2

Haben Sie versucht puts '\1'? (einfache Anführungszeichen anstelle von doppelten) Ich bin nicht 100% sicher, was Sie fragen, aber wenn das hilft, Prost.

2

Ihre Befehlszeile zeigt "\ 1" an, da irb .inspect für das Objekt verwendet, das die Zeichenfolge ausblendet. Also im Wesentlichen \ 1 ist richtig gespeichert, aber wenn es angezeigt wird, fügt es ein weiteres \ um Ihnen anzuzeigen, dass es