2011-03-23 15 views
93

Bir dizede bir karakterin yinelenme sayısını bulmama yardımcı olabilecek Ruby yöntemini (1.9 ...) arıyorum. Tüm olayları arıyorum, sadece ilkini değil.Ruby'de bir dizgede bir karakterin varlığını bulma

Örneğin: "Melanie bir noob" 'a' harfinin iki oluşumu vardır. Bunu bulmak için kullanabileceğim Ruby yöntemi ne olurdu?

Referans olarak Ruby-doc.org kullanıyorum ve özellikle String sınıfındaki tarama yöntemi gözüme çarptı. Ancak, sözler benim için biraz zor, bu yüzden ben tarama kavramını gerçekten kavramıyorum.

+2

Eğer olaylar numarası veya dizede olaylardan endeks değerleri ister misin? Ne kadar çok yararlı olduğunu bilmek, ama genellikle bir sonraki soru "nerede?" –

cevap

124

sadece bir yılların sayısını isterseniz:

puts "Melanie is a noob".count('a') #=> 2 
+10

I * gerçekten * bu cevabı sevdim kadar sadece :-) hala +1 olsa da sorudan dize aldığınızı fark ettim. – Hubro

+0

neden noktalarla çalışmıyor? Örnek "voyage.localhost.com" .count ('www.') => 2. Bu nasıl olabilir? – Gediminas

+11

@Gediminas 'count' karakter dizisini değil, karakterleri sayar. "voyage.localhost.com" .count ('www.'), "voyage.localhost.com" .count ('w.') ile aynıdır ve hiçbir w ve iki nokta olmadığından sonuç 2'dir. – steenslag

49

önceden sorulan bir soruya gelen bu bağlantı böylece

"Melanie is a noob".scan(/a/) 

dönecektir, scanning a string in Ruby

tarama bir dizi olarak bir dizede bir dize tüm oluşumları döndüren yardımcı olmalıdır

["a","a"] 
+1

Bu aradığım cevap oldu :) – Zippie

+3

'scan' basit dizelerle de çalışıyor, bu yüzden '(' a ')' taranabilir ( –

28

String.index() yöntemini arıyorsanız:

Belirtilen alt dizenin ilk oluşumunun veya str. modelinin (regexp) dizinini döndürür. Bulunamadı nil döndürür. ikinci parametresi varsa, aramaya başlamak için dizgesindeki konumu belirtir.

"hello".index('e')    #=> 1 
"hello".index('lo')   #=> 3 
"hello".index('a')    #=> nil 
"hello".index(?e)    #=> 1 
"hello".index(/[aeiou]/, -3) #=> 4 
+3

) Alıntı bloklarına kod yerleştirebileceğinizi asla bilmiyordum! Neat – Hubro

İlgili konular