Supongamos que tenemos una cadena como esta:
Hello, my\n name is Michael.
¿Cómo puedo eliminar esa nueva línea y quitar esos espacios después de eso en uno dentro de la cadena para obtener esto?
Hello, my name is Michael.
echa un vistazo al squish
método Rails :
Para ilustrar Rubys integrado en el apretón :
string.gsub("\n", ' ').squeeze(' ')
squeeze(' ')
solo aprieta espacios. "Squeeze my application's copy".squeeze(' ') => "Squeeze my application's copy"
.
La forma más sencilla probablemente sería
s = "Hello, my\n name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."
Prueba esto:
s = "Hello, my\n name is Michael."
s.gsub(/\n\s+/, " ")
my_string = "Hello, my\n name is Michael."
my_string = my_string.gsub( /\s+/, " " )
\n
ideal (creo) que debería reemplazarse con un espacio en caso de algo como"Hello,\nMy name is Michael"
esta expresión regular reemplazará la instancia de 1 o más espacios en blanco con 1 espacio en blanco, ps \s
reemplazará todos los caracteres de espacio en blanco que incluyen \s\t\r\n\f
:
a_string.gsub!(/\s+/, ' ')
Del mismo modo para solo retorno de carro
str.gsub!(/\n/, " ")
Primero reemplace todo \n
con espacios en blanco, luego use la expresión regular eliminar múltiples espacios en blanco.
Utilice String # gsub :
s = "Hello, my\n name is Michael."
s.gsub(/\s+/, " ")
"Hello,\nMy name is Michael"
. Idealmente, querría un espacio donde haya un\n
Use squish
currency = " XCD"
str = currency.squish
str = "XCD" #=> "XCD"
Puede agregar solo el squish
método (y nada más) a Ruby al incluir solo esta faceta de Ruby:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/squish.rb
require 'facets/string/squish'
Entonces usa
"my \n string".squish #=> "my string"
No requiere rieles.
some_string.strip.gsub(/\s+/, " ")
que es exactamente lo que hace Squish.squish