轨道匹配参数中字符串的结尾



我收到带有以下键的参数:

params["guest1_member1"]
params["guest2_member1"]
params["guest3_member2"]
params["guest4_member2"]

是否有一些正则表达式方法来获取包含_member1参数?

像这样:

params["*_member1"]

这应该为您完成,无需正则表达式:

params.select { |key, _value| key.ends_with?('_member') }

这是不言自明的,从参数哈希中选择以'_member'结尾的所有元素。

您也可以使用破坏性的:

params.keep_if { |key, _value| key.ends_with?('_member') }`

但请注意,这将从参数中永久删除所有不匹配项。

请注意,这会匹配以您的模式结尾的字符串,但如果模式可以出现在键中的任何位置,您可以切换到key.include?(...)

我已经看过了,不相信您可以将正则表达式传递给Hash::[],尽管如果我错了,会很高兴得到纠正。

您始终可以在上述块之一中使用正则表达式,尽管我相信给出的选项更具可读性。

希望无论如何都有帮助 - 让我知道你过得怎么样。

最新更新