将字符串转换为嵌套的Ruby Hash [] get方法

brccelvz  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(104)

我有一个像'[field1][field2]'这样的字符串,我需要使用它来访问Hash对象中的嵌套字段。基本上,我想做hash_obj['field1']['field2']
如何将该字符串转换为Ruby将理解为符号的东西,以便能够访问嵌套的Hash字段?
我尝试使用.to_sym,但没有找到使用它的方法。我找到了其他从字符串生成新哈希对象的帖子,但我找不到一个专门解释如何使用字符串来构建哈希字段访问的帖子。

wz3gfoph

wz3gfoph1#

  1. Ruby stdlib中没有将任意字符串转换为struct的方法(例如散列)。
    1.分割字符串最简单的方法是String#split,它返回Array。从数组生成哈希是一个更简单的任务。
    1.最常见的答案,涵盖所有情况:使用regexp:
re = /\[(.*?)\]+/
s = "[field0][foo][bar]"
fields = s.scan(re).flatten
=> ["field0", "foo", "bar"]
fields.each do |field|
  your_existing_hash[field]
end

字符串
1.如果你描述了字符串的来源和格式(所有不变量),你的任务可能会有一个简单的解决方案。例如,如果你的字符串是URL编码的参数,那么有一堆库可以解析这些字符串。

相关问题