2012-11-24 5 views
5

vorrei mantenere \n quando stampo fuori le stringhe in Ruby,Rubino - Come mantenere n quando stampo fuori le stringhe

Come adesso, se uso puts o print, \n si concluderà con una nuova linea :

pry(main)> print "abc\nabc" 
abc 
abc 

c'è un modo per far rubino stamparlo come: abc\nabc?

UPDATE

dispiace che forse non ho fatto più chiaro. Sto eseguendo il debug delle mie espressioni regolari, quindi quando invio una stringa, se un \n viene visualizzato come \n, non è una nuova riga, sarebbe più facile per me controllare. Quindi la risposta di @slivu è esattamente quello che voglio. Grazie ragazzi.

+0

Vuoi una nuova riga nella stringa o volete un letterale ' '\ n''? –

+0

@muistooshort Penso che voglia un _literal_ '\ n' – MiJyn

+0

@lkjoel: O forse vuole una nuova riga e' str.inspect', solo larryzhao lo sa per certo. –

risposta

12

vorrei suggerire di utilizzare p invece di puts/print:

p "abc\nabc" 
=> "abc\nabc" 

e di fatto con pry non c'è bisogno di utilizzare qualsiasi loro, digita la stringa e inserisci:

str = "abc\nabc" 
=> "abc\nabc" 
str 
=> "abc\nabc" 
2

Perché \ n è una parola chiave speciale, è necessario fuga esso, con l'aggiunta di una barra rovesciata prima la parola chiave speciale (e per questo, backslash deve essere sfuggito), in questo modo: abs\\nabc. Se si desidera stampare \\n, è necessario sostituirlo per essere abs\\\\n e così via (due barre retroverse per visualizzare una barra rovesciata).

È anche possibile utilizzare solo virgolette singole invece di virgolette doppie in modo che le parole chiave speciali non vengano interpretate. Questo, secondo me, è una cattiva pratica, ma se si fa il codice aspetto molto più gradevole, credo che ne vale la pena :)

Ecco alcuni esempi di modi si può sfuggire (come una sorta di TL; versione DR):

puts 'abc\nabc' # Single quotes ignore special keywords 
puts "abc\\nabc" # Escaping a special keyword (preferred technique, IMHO) 
p "abc\nabc" # The "p" command does not interpret special keywords 
0

Usa% q per creare una stringa per esempio:

str = %q{abc\nklm} 
    puts str #=> 'abc\nklm' 

o

puts %q{abc\nklm} 

o utilizzare carattere di escape

puts "abc\\nklm" 
1

In Ruby, stringhe in una singola citazione letterale, come 'abc \ NABC' non viene interpolata.

1.9.3p194 :001 > print 'abc\nabc' 
abc\nabc => nil 

vs con le doppie virgolette

1.9.3p194 :002 > print "abc\nabc" 
abc 
abc => nil 
3

Si può anche fare in questo modo

puts 'abc\nabc' 
Problemi correlati