如何在字符串中出现所有元音及其索引?
示例:str =“rohan” 我想要一个像{1 =>'o',3 =>的结果'a'}
ruby中是否有任何方法可以这样做,还是我必须为此编写方法?
答案 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