Ruby 使用正则表达式获取哈希值
我有一个像这样的杂烩Ruby 使用正则表达式获取哈希值,ruby,regex,Ruby,Regex,我有一个像这样的杂烩 hash_variable = {"74"=> {"x"=>{"order_id"=>"3643731"}, "x"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}} 注:“x”->1..n来自每个索引 如果detail\u id为nil,我想拒绝哈希。我试过使用正则表达式: hash_variable.each do |items| unless items[
hash_variable = {"74"=> {"x"=>{"order_id"=>"3643731"}, "x"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}}
注:“x”->1..n
来自每个索引
如果detail\u id
为nil
,我想拒绝哈希。我试过使用正则表达式:
hash_variable.each do |items|
unless items[/(\d+)/][:detail_id].nil?
p items
end
end
# => `NoMethodError: undefined method '[]' for nil:NilClass`
我可以使用“x”的regex来获取任何hash have
detail\u id
key吗?如果不是,如果detail\u id
为零,我如何拒绝哈希?好的,我已经解决了我的问题
hash_variable = {"74"=> {"0"=>{"order_id"=>"3643731"}, "1"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}}
hash_variable.each do |key,items|
p items.select { |k,v| !v['detail_id'].nil? }
end
# {"1"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}
根据塔德曼的建议进行更新比上述更好
hash_variable.each do |key,items|
p items.select { |k,v| v['detail_id'] }
end
您的哈希无效:无法获取两个“x”键。键应该是唯一的
“x”->1..n从每个键的索引来看,它们都是唯一的..你想得到什么?@fl00r它不是无效的,它是多余的。@sawa:没错,它是冗余的,但我可以解决这个问题。抱歉,之前我没有把这个问题放在我的帖子上,所以这会让你成为一个投票人,而不是一个助手。items.select{k,v | v['detail_id']}
在这里要简洁得多,除非你希望v['detail_id']
有时字面上是false
。