数组选择中的Ruby变量正则表达式

时间:2018-11-26 23:16:19

标签: arrays ruby regex select

我正在尝试使用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 

如何在正则表达式中放置变量?我究竟做错了什么?

我可以遍历数组,检查每个项目,然后将值保存在另一个数组中,但这不是很像红宝石,是吗?

1 个答案:

答案 0 :(得分:1)

您在正则表达式定义中包括引号:

app/authenticators/torii.js

删除它们,它应该可以工作:

 /"#{things_i_want}"/

编辑: 顺便说一句,您不必使用正则表达式进行精确匹配,可以使用相等性检查(/#{things_i_want}/ ==,具体取决于您是否需要将字符串等于要包含的内容或只包含它:

#include?