在Ruby中查找字符串中#个字符的出现


103

我正在寻找Ruby方法(1.9 ...),该方法可以帮助我查找字符串中字符出现的次数。我正在寻找所有事件,而不仅仅是第一次。

例如:“忧郁症是一个菜鸟”字母“ a”有两次出现。为了找到这个,我可以使用什么Ruby方法?

我一直在使用Ruby-doc.org作为参考,并且这种scan方法String: class引起了我的注意。我的措辞有点难以理解,因此我并没有真正掌握的概念scan

编辑:我能够使用解决此问题scan我在视频中分享了如何实现目标。


2
您是否要在字符串中出现次数或出现次数的索引值?知道多少通常是有用的,但是通常下一个问题是“它们在哪里?”
Tin Man

Answers:


142

如果您只想要一个数字:

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

有关更多详细信息的文档


18
真的很喜欢这个答案,直到我注意到您只是从问题中提取了字符串:-)还是+1。
Hubro

为什么点不起作用?示例“ voyage.localhost.com” .count('www。')=> 2.怎么可能?
Gediminas

12
@Gediminas count计算字符,而不是字符串。“voyage.localhost.com” .Count之间(“WWW”)是一样的“voyage.localhost.com” .Count中和,因为没有W公司和两个点的结果是2(“W”)
steenslag

2
您是否有可能添加指向文档的链接
基金莫妮卡的诉讼

2
最初,我对这个答案感到非常震惊,然后我发现Melanie首先使用了该示例。好答案!
AJFaraday

52

先前提出的问题的此链接应有助于 在Ruby中扫描字符串

扫描将字符串中所有出现的字符串作为数组返回,因此

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

将返回

["a","a"]

1
这是我一直在寻找的答案:)
Zippie

3
scan也可以使用简单的Strings,因此scan('a')也可以使用
Daniel Rikowski

1

我能够通过传递字符串来解决此问题,scan如另一个答案所示。

例如:

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

输出:

2

我还可以通过使用scan并传递一个字符串代替regex来拉回出现的情况,regex与另一个答案略有不同,但是对于避免regex很有帮助。

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

输出:

['e','e']

在弄清楚之后,我在一个小型视频指南中进一步探讨了这些方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.