如何选择数组中的某些模式

时间:2014-09-22 03:01:04

标签: ruby

这是我的阵列:

a = ['a','b','c', 'C!', 'D!']

我想选择后跟!字符的任何大写字母并显示它们。我在努力:

puts a.select! {|i|  i.upcase + "!"}

给了我空集。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

puts a.grep(/[A-Z]!/)

会做的。

答案 1 :(得分:1)

尝试以下方法:

a.select {|i| i =~ /[A-Z]!/}

答案 2 :(得分:0)

这是在Ruby中使用Regexp匹配方法的另一种方法。

a.select { |letter| /[A-Z]!/.match(letter) }

另外,请注意:在 a.select中考虑一个比“i”更有意义且与上下文相关的变量名称! {|我| i.upcase +“!”} 。例如,我选择了名称“letter”,尽管名称可能更有意义。这只是一个很好的命名实践,很多Ruby程序员都倾向于遵循。同样的事情适用于名为 a 的数组。