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

ruby中的正则表达式以获取字符串中的所有元音,ruby,regex,Ruby,Regex,如何获取字符串中所有出现的元音及其索引 示例:str=“rohan” 我想要一个像{1=>'o',3=>'a'}这样的结果 ruby中是否有任何方法可以这样做,或者我必须为此编写一个方法?我不会在这里使用正则表达式: 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} 或者如果您的

如何获取字符串中所有出现的元音及其索引

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


ruby中是否有任何方法可以这样做,或者我必须为此编写一个方法?

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

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版本没有
到_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"}

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

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版本没有
到_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"}
您可以将()与以下内容一起使用:

您可以将()与以下内容一起使用:


你试过什么吗?元音是一个很小的集合,只需对
[aeiou]
进行正则表达式全局匹配你试过什么吗?元音是一个很小的集合,只需对
[aeiou]
进行正则表达式全局匹配这就是我试图记住的+这是一个好办法。谢谢,很好,艾莉。我不知道,上面写着“开始(n)”→ integer-返回字符串中匹配数组第n个元素的开始偏移量。n可以是引用命名捕获的字符串或符号。“这是我试图记住的。”+这是一个好办法。谢谢,很好,艾莉。我不知道,上面写着“开始(n)”→ 整数-返回字符串中匹配数组第n个元素开始的偏移量。n可以是引用命名捕获的字符串或符号。“Michael,您似乎打算将块变量
i
更改为
\ucode>,但最终结果是
\u i
。没有回答,请回答。我将删除此注释。有些人使用
\u variable
标记一个将被忽略的变量,但他们仍然希望记录它将是什么(Ruby 2支持此功能,并且不会对遵循该命名方案的变量发出警告)。我想让OP明白这是索引,我不知道。很高兴知道。Michael,您似乎打算将块变量
i
更改为
\u
,但结果是
\ui
。没有回答,请回答。我将删除此注释。有些人使用
\u variable
标记一个将被忽略的变量,但他们仍然希望记录它将是什么(Ruby 2支持此功能,并且不会对遵循该命名方案的变量发出警告)。我想让OP明白这是索引,我不知道。很高兴知道。