2010-01-05 23 views
12

" This is a test " gibi bir dizgim var. Dizeyi boşluk karakteri ile bölmek istiyorum. Ben böyle yapmak:Bir dize nasıl bölünmeli ve beyaz boşluk nasıl atlanır?

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

sonucudur:

Bu

bir
testi

olan bu

Neden orada bir testi olduğunu son satır "This is a test"? Ve iki kelime arasında iki veya daha fazla boşluk karakteri varsa, bunun bir "satır" döndürmemesi gerekiyor.

Sadece belirli bir dizede ayrılmış sözcükleri almak istiyorum.
Herhangi bir fikri olan var mı?

cevap

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

model atlanırsa, $ değeri; kullanılır. Eğer dolar ise; nil ( varsayılanıdır), str, boşlukta, '' belirtildiymiş gibi bölünmüştür. Geçen istemiyorsanız Sen

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

yapmalıyım

+3

"Bu bir test" .split – khelll

2

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

ilk komut "koyar" Çünkü olacak "bu bir denemedir" , her bloğa hükmedildikten sonra'u ekleyin. ilk "koyar" ı atlayın ve işiniz bittiğinde

İlgili konular