Respuestas:
Necesita usar "\n"
not '\n'
en su gsub. Las diferentes comillas se comportan de manera diferente.
Las comillas dobles "
permiten la expansión de caracteres y la interpolación de expresiones, es decir. te permiten usar caracteres de control escapados como \n
para representar su verdadero valor, en este caso, nueva línea , y permiten el uso de #{expression}
para que puedas tejer variables y, bueno, prácticamente cualquier expresión ruby que te guste en el texto.
Mientras que, por otro lado, las comillas simples '
tratan la cadena literalmente, por lo que no hay expansión, reemplazo, interpolación o lo que sea.
En este caso particular, es mejor utilizar el método String .delete
o .tr
el método para eliminar las nuevas líneas .
tr
es una mejor opción para esta tarea, pero como digo, pensé que era mejor señalar la diferencia entre comillas simples y dobles cuando respondí.
Cuando desee eliminar una cadena, en lugar de reemplazarla, puede usar String#delete
(o su equivalente mutador String#delete!
), por ejemplo:
x = "foo\nfoo"
x.delete!("\n")
x
ahora es igual a "foofoo"
En este caso específico String#delete
es más legible que gsub
ya que en realidad no está reemplazando la cadena con nada.
delete
no es destructivo como se indica aquí. Devuelve una nueva cadena.
Si desea o no le importa que se eliminen todos los espacios en blanco iniciales y finales de su cadena, puede usar el strip
método.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
como se menciona aquí .
editar El título original de esta pregunta era diferente. Mi respuesta es para la pregunta original.
strip
solo elimina los espacios en blanco iniciales
No necesitas una expresión regular para esto. Utilice tr:
"some text\nandsomemore".tr("\n","")
replace
simplemente cambia la cadena a una nueva, como asignación de variable; mientras que tr
es una búsqueda y reemplazo global carácter por carácter.
uso chomp
o strip
funciones de Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
solo elimina los espacios en blanco iniciales