将数组和字母作为参数,并返回包含该字母的单词的新数组

时间:2014-08-09 07:51:32

标签: ruby arrays

我可以运行搜索并找到我想要的元素,并可以使用该字母返回这些单词。但是当我开始提出论据时,它就不起作用了。我用select尝试了include?,它会抛出错误说私有方法。这是我的代码,它返回我期待的内容:

my_array = ["wants", "need", 3, "the", "wait", "only", "share", 2]

def finding_method(source)
    words_found = source.grep(/t/) #I just pick random letter
    print words_found
end

puts finding_method(my_array)
# => ["wants", "the", "wait"]

我需要添加第二个参数,但它会中断:

def finding_method(source, x)
    words_found = source.grep(/x/)
    print words_found
end

puts finding_method(my_array, "t")

这不起作用(它返回一个空数组,因为数组中没有'x')所以我不知道如何传递参数。也许我正在使用错误的方法来做我想要的事情。我必须定义'x',但我不知道该怎么做。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

正则表达式支持字符串插值,就像字符串一样。

/x/

查找字符x

/#{x}/

将首先插入变量的值并生成/t/,这样做你想要的。居多。

请注意,如果您尝试搜索可能在正则表达式语法中有任何意义的任何文本(例如.*),则应该将其转义:

/#{Regexp.quote(x)}/

对于您在正则表达式中包含文字字符串的任何情况,这都是正确的答案,您还没有专门为了成为正则表达式而构建自己,即99%的情况下您需要&# 39;重新将变量插入到regexp中。