2013-01-16 21 views
5

Kısmi bir dizeyi kullanarak bir dizide arama yapmak ve dizenin bulunduğu dizini almak istiyorum. Örneğin:Kısmi bir dizeyi kullanarak diziyi nasıl arar ve dizini döndürürüm?

a = ["This is line 1", "We have line 2 here", "and finally line 3", "potato"] 
a.index("potato") # this returns 3 
a.index("We have") # this returns nil 

doğru bir doğru/yanlış ifadeyi dönecektir a.any? kullanarak tam dize döndürür a.grep Kullanılması ve ancak eşleşme bulunursa, ya olduğu ne döner endeksi en azından ben çözemiyorum nasıl yapılır.

Bir dosya okuyan, belirli bir üstbilgiyi arayan ve daha sonra bu başlıkların dizinini döndüren bir kod parçası üzerinde çalışıyorum, böylece gelecekteki aramalar için bir mahsup olarak kullanabilirsiniz. Aramamı belirli bir dizinden başlatmadan, diğer aramalarım yanlış pozitif sonuç alacaktır.

+0

http://www.ruby-doc.org/core-1.9.3/String.html#method-i-3D-7E – oldergod

+0

sadece dizi istiyorsunuz dizenin bulunduğu dizin veya dizi dizini, artı dizilimdeki dizgeye ofset dizini? –

+0

Sadece birincisi, ama gelecekteki kullanım için ikinciyle ilgilenecektim, çünkü bu bilmenin çok yararlı olabileceğine benziyor! – user1976679

cevap

13

Bir blok kullanın.

a.index{|s| s.include?("We have")} 

veya

a.index{|s| s =~ /We have/} 
+0

İnanılmaz! Bence sadece doğru/yanlış ile çalışacağım, ama yanılmışım! Bu mükemmel çalışıyor, teşekkürler! – user1976679

İlgili konular