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

时间:2011-03-23 18:02:26

标签: ruby string methods

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

例如:“Melanie是一个菜鸟” 字母'a'有两次出现。 我可以使用什么Ruby方法来找到它?

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

4 个答案:

答案 0 :(得分:133)

如果您只想要一个号码:

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

Docs了解详情。

答案 1 :(得分:49)

以前提出的问题的这个链接应该有所帮助 scanning a string in Ruby

scan将字符串中所有出现的字符串作为数组返回,所以

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

将返回

["a","a"]

答案 2 :(得分:28)

您正在寻找String.index()方法:

  

返回第一个索引   发生给定的子串或   str中的模式(regexp)。返回零   如果没有找到。如果是第二个参数   存在,它指定位置   在字符串中开始搜索。

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

答案 3 :(得分: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']

弄清楚之后,我在small video guide I created中进一步研究了这些方法。