Ruby:将嵌套数组的字符串表示解析为数组?
发布时间:2020-12-16 22:36:32 所属栏目:百科 来源:网络整理
导读:假设我有字符串 "[1,2,[3,4,[5,6]],7]" 我将如何解析到数组中 [1,7] ? 嵌套结构和模式在我的用例中是完全任意的. 我目前的ad-hoc解决方案涉及在每个时期之后添加一个空格并使用YAML.load,但如果可能,我想要更清洁一个. (如果可能,则不需要外部库) 解决方法
假设我有字符串
"[1,2,[3,4,[5,6]],7]" 我将如何解析到数组中 [1,7] ? 嵌套结构和模式在我的用例中是完全任意的. 我目前的ad-hoc解决方案涉及在每个时期之后添加一个空格并使用YAML.load,但如果可能,我想要更清洁一个. (如果可能,则不需要外部库) 解决方法
正在使用JSON正确解析该特定示例:
s = "[1,7]" #=> "[1,7]" require 'json' #=> true JSON.parse s #=> [1,7] 如果不行,可以尝试运行字符串,通过 编辑:这是一个简单的递归,基于正则表达式的解析器,无验证,未测试,不适用于生产使用等: def my_scan s res = [] s.scan(/((d+)|([(.+)]))/) do |match| if match[1] res << match[1].to_i elsif match[3] res << my_scan(match[3]) end end res end s = "[1,7]" p my_scan(s).first #=> [1,7] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |