【问题标题】:How to parse key name with name(value) pairs into hash of key/value pairs with original value?如何将具有名称(值)对的键名解析为具有原始值的键/值对的散列?
【发布时间】:2012-08-16 14:29:10
【问题描述】:

我有一个像这样的大哈希:

{"id"=>"1", 
"contact_id"=>"15062422", 
"status"=>"Complete",
"[question(12), option(24), piped_page(32]" => "Yes", 
"[question(13), option(32)]" => "Robert",
"[question(14)]" => "Thing"}

我需要解析以 '[' 开头的键来分隔名称(值)对。每个键中的名称(即问题、选项等)的数量是可变的,但存在已知数量的可能性。

我想将每一对转换成新的,如下所示:

{:question => 12, :option => 24, :piped_page => 32, :value => "Yes"}

我曾想过在每个哈希元素上使用 .to_s,然后在 eval 之后进行各种字符串替换,但是 .to_s 会转义双引号,这确实使事情变得复杂。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您可以使用正则表达式来解决它:

    str = "[question(12), option(24), piped_page(32)]"
    Hash[str.scan /(\w+)\((\w+)\)/]
    
    => {"question"=>"12", "option"=>"24", "piped_page"=>"32"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多