2011-09-07 44 views
8

¿Cómo elimino las líneas vacías de una cadena? He intentado some_string = some_string.gsub (/^$ /, "");Ruby eliminar líneas vacías de la cadena

y mucho más, pero nada funciona.

+0

posible duplicado de [Ruby: Recorte nuevas líneas en blanco] (http://stackoverflow.com/questions/1040390/ruby-trim-new-blank-lines) – bragboy

+2

no es un duplicado. ese título es * muy * engañoso –

Respuesta

20

quitar líneas en blanco:

str.gsub /^$\n/, '' 

Nota: a diferencia de las otras soluciones, este realmente elimina las líneas en blanco y no saltos de línea :)

>> a = "a\n\nb\n" 
=> "a\n\nb\n" 
>> a.gsub /^$\n/, '' 
=> "a\nb\n" 

Explicación: coincide con el inicio ^ y el final $ de una línea sin nada intermedio, seguido de un salto de línea. (! O apretar):

alternativa, más explícito (aunque menos elegante) solución

str.each_line.reject{|x| x.strip == ""}.join 
0

Originalmente

some_string = some_string.gsub(/\n/,'') 

Actualizado

some_string = some_string.gsub(/^$\n/,'') 
+1

no, esto elimina todas las nuevas líneas de la cadena –

4

reemplazar múltiples saltos de línea con una sola:

fixedstr = str.gsub(/\n\n+/, "\n") 

o

str.gsub!(/\n\n+/, "\n") 
3

Se podría tratar de sustituir todas las apariciones de 2 o más saltos de línea con sólo uno:

my_string.gsub(/\n{2,}/, '\n') 
10

apretón hace exactamente eso - sin una expresión regular.

str.squeeze("\n") 
Cuestiones relacionadas