2010-01-05 17 views
12

Ho una stringa come " This is a test ". Voglio dividere la stringa per il carattere dello spazio. Lo faccio in questo modo:Come dividere una stringa e saltare lo spazio bianco?

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

Il risultato è:

Questo

è
un test

Questo è un test

Perché c'è l'ultima riga "This is a test"? E ho bisogno, che se ci sono due o più caratteri di spazio tra due parole, questo non dovrebbe restituire una "riga".

Voglio solo ottenere le parole divise in una determinata stringa.
Qualcuno ha un'idea?

risposta

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

Se modello viene omesso, il valore di $; viene utilizzato. Se $; è nil (che è il valore predefinito di ), str è diviso nello spazio bianco come se fosse stato specificato ".

+3

"Questo è un test" .split – khelll

2

Si dovrebbe fare

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

Se non si desidera che l'ultimo "Questo è un test"

Perché

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

Il primo comando "mette" sarà inserisci dopo che il blocco di ogni blocco è stato scomposto. ometti il ​​primo "mette" e il gioco è fatto

Problemi correlati