Risposte:
Devi usare "\n"
not '\n'
nel tuo gsub. Le diverse virgolette si comportano in modo diverso.
Le virgolette doppie "
consentono l'espansione dei caratteri e l'interpolazione delle espressioni, ad es. ti permettono di usare caratteri di controllo di escape come \n
per rappresentare il loro vero valore, in questo caso, newline , e consentono l'uso di #{expression}
così puoi intrecciare variabili e, beh, praticamente qualsiasi espressione ruby che ti piace nel testo.
Mentre d'altra parte, le virgolette singole '
trattano la stringa letteralmente, quindi non c'è espansione, sostituzione, interpolazione o altro.
In questo caso particolare, è meglio usare il metodo .delete
o .tr
String per eliminare le nuove righe .
tr
sia una scelta migliore per questo compito, ma come ho detto, ho pensato che fosse meglio sottolineare la differenza tra virgolette singole e doppie quando ho risposto.
Quando vuoi rimuovere una stringa, invece di sostituirla puoi usare String#delete
(o il suo equivalente mutatore String#delete!
), ad esempio:
x = "foo\nfoo"
x.delete!("\n")
x
ora è uguale a "foofoo"
In questo caso specifico String#delete
è più leggibile rispetto al gsub
fatto che non stai effettivamente sostituendo la stringa con nulla.
delete
non è distruttivo come indicato qui. Restituisce una nuova stringa.
Se vuoi o non ti dispiace rimuovere tutti gli spazi bianchi iniziali e finali dalla tua stringa, puoi usare il strip
metodo.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
come accennato qui .
modifica Il titolo originale di questa domanda era diverso. La mia risposta è per la domanda originale.
strip
rimuove solo gli spazi bianchi iniziali
Non hai bisogno di una regex per questo. Usa tr:
"some text\nandsomemore".tr("\n","")
replace
cambia semplicemente la stringa in una nuova, come l'assegnazione di una variabile; mentre tr
è una ricerca e sostituzione globale carattere per carattere.
utilizzare chomp
o strip
funzioni da Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
rimuove solo gli spazi bianchi iniziali