Trovare # occorrenze di un carattere in una stringa in Ruby


103

Sto cercando il metodo Ruby (1.9 ...) che può aiutarmi a trovare il numero di occorrenze di un carattere in una stringa. Sto cercando tutte le occorrenze, non solo la prima.

Ad esempio: "Melanie è un noob" Ci sono due occorrenze della lettera "a". Quale sarebbe il metodo Ruby che potrei usare per trovarlo?

Ho usato Ruby-doc.org come riferimento e il scanmetodo ha String: classattirato la mia attenzione. La formulazione è un po 'difficile da capire per me, quindi non capisco davvero il concetto di scan.

Modifica: sono stato in grado di risolvere questo problema utilizzando scan. Ho condiviso in un video come l'ho raggiunto.


2
Vuoi il numero di occorrenze oi valori di indice delle occorrenze nella stringa? Sapere quanti sono spesso utili, ma di solito la domanda successiva è "dove sono?"
Tin Man

Risposte:


143

Se vuoi solo il numero di a:

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

Documenti per maggiori dettagli.


18
Mi è piaciuta molto questa risposta finché non ho notato che hai appena preso la stringa dalla domanda :-) Comunque, +1.
Hubro

perché non funziona con i punti? Esempio "voyage.localhost.com" .count ('www.') => 2. Come può essere?
Gediminas

12
@Gediminas countconta i caratteri, non le stringhe. "voyage.localhost.com" .count ('www.') è uguale a "voyage.localhost.com" .count ('w.') e poiché non ci sono w e due punti il ​​risultato è 2.
steenslag

2
C'è qualche possibilità che potresti aggiungere un link ai documenti ?
Finanzia la causa di Monica il

2
Inizialmente sono rimasto piuttosto scioccato da questa risposta, poi ho visto che Melanie ha usato per prima l'esempio. Buona risposta!
AJFaraday

52

Questo collegamento da una domanda posta in precedenza dovrebbe aiutare a scansionare una stringa in Ruby

scan restituisce tutte le occorrenze di una stringa in una stringa come un array, quindi

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

sarà di ritorno

["a","a"]

1
Questa è la risposta che stavo cercando :)
Zippie

3
scanfunziona anche con stringhe semplici, quindi scan('a')può essere utilizzato anche
Daniel Rikowski

1

Sono stato in grado di risolvere questo problema passando una stringa scancome mostrato in un'altra risposta.

Per esempio:

string = 'This is an example'
puts string.count('e')

Uscite:

2

Sono stato anche in grado di estrarre le occorrenze usando la scansione e passando una puntura invece di regex che varia leggermente da un'altra risposta ma è stato utile per evitare regex.

string = 'This is an example'
puts string.scan('e')

Uscite:

['e','e']

Ho esplorato ulteriormente questi metodi in una piccola guida video che ho creato dopo averlo capito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.