我可以运行搜索并找到我想要的元素,并可以使用该字母返回这些单词。但是当我开始提出论据时,它就不起作用了。我用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'
,但我不知道该怎么做。任何帮助都会很棒。
答案 0 :(得分:0)
正则表达式支持字符串插值,就像字符串一样。
/x/
查找字符x
。
/#{x}/
将首先插入变量的值并生成/t/
,这样做你想要的。居多。
请注意,如果您尝试搜索可能在正则表达式语法中有任何意义的任何文本(例如.
或*
),则应该将其转义:
/#{Regexp.quote(x)}/
对于您在正则表达式中包含文字字符串的任何情况,这都是正确的答案,您还没有专门为了成为正则表达式而构建自己,即99%的情况下您需要&# 39;重新将变量插入到regexp中。