Пошук # зустрічань символу в рядку в Ruby


103

Я шукаю метод Ruby (1.9 ...), який може допомогти мені знайти кількість входжень символу в рядку. Я шукаю всі події, не лише перші.

Наприклад: "Меланія - нооб" Існує два випадки букви "а". Який би метод Рубі я міг би використати для того, щоб знайти це?

Я використовую Ruby-doc.org як орієнтир і scanметод, який String: classпотрапив у мене на очах. Формулювання мені трохи важко зрозуміти, тому я не дуже розумію цю концепціюscan .

Редагувати: мені вдалося вирішити це за допомогою scan. Я поділився у відео, як цього досягнув.


2
Ви хочете кількість входжень або значення індексу подій у рядку? Знаючи, скільки часто корисно, але зазвичай наступне питання - "де вони?"
Олов'яний чоловік

Відповіді:


142

Якщо ви просто хочете кількість записів:

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

Документи для отримання більш детальної інформації.


18
Мені дуже сподобалась ця відповідь, поки я не помітив, що ви просто взяли рядок із питання :-) Хоча все-таки +1.
Хубро

чому це не працює з крапками? Приклад "voyage.localhost.com" .count ('www.') => 2. Як це може бути?
Gediminas

12
@Gediminas countрахує знаки , а не рядки. "voyage.localhost.com" .count ("www.") - це те саме, що "voyage.localhost.com" .count ('w.'), а оскільки немає w і двох крапок, результат є 2.
steenslag

2
Будь-який шанс ви могли б додати посилання на документи ?
Позов по

2
Я спочатку був дуже шокований цією відповіддю, потім побачив, що Меланія спочатку використала приклад. Хороша відповідь!
AJFaraday

52

Це посилання з раніше заданого питання має допомогти заданого сканувати рядок у Ruby

scan повертає всі виникнення рядка в рядку як масив, так

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

повернеться

["a","a"]

1
Цю відповідь я шукав :)
Zippie

3
scanпрацює і з простими струнними, також scan('a')може бути використаний
Daniel Rikowski

1

Мені вдалося вирішити це, передавши рядок, scanяк показано в іншій відповіді.

Наприклад:

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

Виходи:

2

Я також зміг витягнути події, використовуючи сканування та передачу жала замість регулярного вираження, що дещо відрізняється від іншого відповіді, але було корисно, щоб уникнути регулярного вираження.

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

Виходи:

['e','e']

Я вивчив ці методи далі у невеликому відео-путівнику, який я створив після того, як я зрозумів це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.