我正在接收带有以下键的参数:
params["guest1_member1"]
params["guest2_member1"]
params["guest3_member2"]
params["guest4_member2"]
是否有一些正则表达式来获取包含_member1
的参数?
类似的东西:
params["*_member1"]
答案 0 :(得分:0)
这应该为你做,没有正则表达式:
params.select { |key, _value| key.ends_with?('_member') }
它非常自我解释,选择以'_member'
结尾的params散列中的所有元素。
你也可以使用破坏性的:
params.keep_if { |key, _value| key.ends_with?('_member') }`
虽然注意将永久删除params中的所有非匹配。
请注意,这会匹配以您的模式结尾的字符串,但如果模式可以出现在密钥中的任何位置,则可以切换到key.include?(...)
。
我已经看过了,并且不相信你可以将正则表达式传递给Hash::[]
,但如果我错了就会很高兴得到纠正。
您可以在上述某个块中使用正则表达式,但我相信给出的选项更具可读性。
希望无论如何都有所帮助 - 让我知道你是如何继续下去的。