我正在尝试使用array.select
从字符串数组中排除元素。我有这种方法:
def filter_out_other_bad_vals(array_of_strs, things_i_want)
array_of_strs = array_of_strs.select { |line| /"#{things_i_want}"/.match(line) }
end
我想将字符串作为变量things_i_want
传递。但这不会返回任何匹配项:
array = ["want_this", "do_not_want", "do_not_want","want_this", "want_this"]
pattern = 'want_this'
array = filter_out_other_bad_vals(array, pattern)
这将返回一个空数组。但是,如果我在match表达式中对值进行硬编码,我会得到想要的。
def filter_out_other_bad_vals(array_of_strs, things_i_want)
array_of_strs = array_of_strs.select { |line| /want_this/.match(line) }
end
如何在正则表达式中放置变量?我究竟做错了什么?
我可以遍历数组,检查每个项目,然后将值保存在另一个数组中,但这不是很像红宝石,是吗?
答案 0 :(得分:1)
您在正则表达式定义中包括引号:
app/authenticators/torii.js
删除它们,它应该可以工作:
/"#{things_i_want}"/
编辑:
顺便说一句,您不必使用正则表达式进行精确匹配,可以使用相等性检查(/#{things_i_want}/
或==
,具体取决于您是否需要将字符串等于要包含的内容或只包含它:
#include?