2010-01-05 35 views
12

Tengo una cadena como " This is a test ". Quiero dividir la cadena por el carácter de espacio. Lo hago así:¿Cómo dividir una cadena y saltear espacios en blanco?

puts " This is a test ".strip.each(' ') {|s| puts s.strip} 

El resultado es:

Este

es
una prueba

Esta es una prueba

¿Por qué hay la última línea "This is a test"? Y necesito, que si hay dos o más caracteres espaciales entre dos palabras, esto no debería devolver una "fila".

Solo quiero obtener las palabras divididas en una cadena dada.
¿Alguien tiene una idea?

Respuesta

41
irb(main):002:0> " This is a test ".split 
=> ["This", "is", "a", "test"] 

irb(main):016:0* puts " This is a test ".split 
This 
is 
a 
test 

str.split(pattern=$;, [limit]) => anArray

Si se omite el patrón, el valor de $; se usa. Si $; es nil (que es el predeterminado ), str se divide en espacios en blanco como si se hubiera especificado `'.

+3

"This is a test" .split – khelll

2

Debe hacer

" This is a test ".strip.each(' ') {|s| puts s.strip} 

Si no desea que el último "Esto es una prueba"

Debido

irb>>> puts " This is a test ".strip.each(' ') {} 
This is a test 
1

El primer comando "pone" será ponga después de que se ejecute cada bloque. omite los primeros "puts" y ha terminado

Cuestiones relacionadas