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

Roh*_*ari 1 ruby regex

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

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

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

Mic*_*ohl 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}
Run Code Online (Sandbox Code Playgroud)

或者如果您的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"}
Run Code Online (Sandbox Code Playgroud)


Ari*_*iao 5

你可以和$~(MatchData)一起使用String#scan:

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