2009-03-03 15 views
5

Ruby'nin each işlevini biraz kafa karıştırıcı buluyorum. Bir metin satırım varsa, bir each döngüsü, her bir karakterden ziyade her boşlukla sınırlı sözcük verir.Ruby'de sekme ile ayrılmış bir metin satırı nasıl ayrıştırılır?

Bir sekme karakteri ile sınırlandırılan dizenin bölümlerini almanın en iyi yolu nedir? Şu anda sahip olduğum şu anda:

line.split.each do |word| 
... 
end 

ama bu doğru değil.

cevap

16

Ben oldukça sorunuzu anlayamadım ama sekme karakterleri üzerinde çizgiler bölmek istiyorsanız, bir argüman olarak bölmek belirtebilirsiniz:

line.split("\t").each ... 

ya olarak belirtebilirsiniz normal ifade: bir dizideki tüm öğeler arasında

line.split(/\t/).each ... 

her temelde sadece yinelenir ve bölünmüş bir dizeden bir dizi üretir.

+0

Basit kasa için sorun değil. Ama öyle değil * bu * basit. İçeriğin harici kaynaktan geldiği sayıda kenar durumu vardır. Yeni satırlar, kaçış dizileri, tırnaklar vb. Farklı uygulamalar arasında çok farklı. –

İlgili konular