在ruby中正则表达式以获取字符串中的所有元音

时间:2014-06-19 03:52:21

标签: ruby regex

如何在字符串中出现所有元音及其索引?

  

示例:str =“rohan”   我想要一个像{1 =>'o',3 =>的结果'a'}

ruby​​中是否有任何方法可以这样做,还是我必须为此编写方法?

2 个答案:

答案 0 :(得分:5)

我不会在这里使用正则表达式:

VOWELS = %w(a e i o u)
str = "rohan"
str.each_char.with_index.select { |c, _i| VOWELS.include? c }.to_h
#=> {"o"=>1, "a"=>3}

或者,如果您的Ruby版本没有to_h

str.each_char.with_index.each_with_object({}) do |(c, i), h| 
  h[i] = c if VOWELS.include?(c) 
end
#=> {1=>"o", 3=>"a"}

答案 1 :(得分:5)

您可以将$~MatchData)与String#scan一起使用:

hash = {}
str.scan(/[aeiou]/){|m| hash[$~.begin(0)] = m }
puts hash