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.