将带括号的字符串转换为树,Ruby

将带括号的字符串转换为树,Ruby,第1张

概述我有一个字符串“动物(爬行动物鸟(老鹰鸽子乌鸦))”,我需要返回: a = [ { "Animals" => [ { "Reptiles" => nil }, { "Birds" => [ { "Eagles" => nil }, { "Pigeons" => nil }, 我有一个字符串“动物(爬行动物鸟(老鹰鸽子乌鸦))”,我需要返回:

a = [  {    "Animals" => [      {        "Reptiles" => nil      },{        "Birds" => [          { "Eagles" => nil },{ "Pigeons" => nil },{ "Crows" => nil }        ]      }    ]  }]

我不明白我是怎么做到的.
在哪里我可以找到一些例子或我可以在谷歌搜索?

解决方法 这是一种可以将字符串转换为数组的方法.

def arrayify(arr)  a = split_arr(arr)  a.map do |h|    k = h.keys.first    v = h.values.first    case v    when Array then { k => arrayify(v) }    else { k=>v }    end  endenddef split_arr(arr)  a = []  while arr.any?    word = arr.shift    if arr.empty? || arr.first != ?(      a << { word=>nil }    else      arr.shift      close_count = 0      b = []      loop do        token = arr.shift        case token        when ?)          break if close_count == 0          close_count -= 1        when ?( then close_count += 1        end        b << token      end      a << { word=>b }    end  end  aend

str = "Animals ( Reptiles Birds ( Eagles Pigeons Crows ) ) Foods ( " +      "Snacks Breakfast ( Pancakes Waffles ) )"arrayify(str.split)  #=> [{"Animals"=>[{"Reptiles" =>nil},#                 {"Birds"    =>[{"Eagles" =>nil},#                                {"Pigeons"=>nil},#                                {"Crows"  =>nil}  #                               ]  #                 }  #                ]  #    },#    {"Foods"  =>[{"Snacks"   =>nil},#                 {"Breakfast"=>[{"Pancakes"=>nil},#                                {"Waffles" =>nil}  #                               ]  #                 }  #                ]  #    }  #   ]
总结

以上是内存溢出为你收集整理的将带括号的字符串转换为树,Ruby全部内容,希望文章能够帮你解决将带括号的字符串转换为树,Ruby所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1276599.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存