我得到一个字符串,其中包含以下重复模式:标签(一个单词),冒号,一些文本(几乎任何东西,甚至空)。例如:Ruby:根据冒号分隔符从字符串创建一个双数组
"FileSize: 597262388 Duration_String: 1h 34mn Duration_string3: 01:34:12.564 Source_Duration: Width: 712 Height: 360"
我试图创建一个基于标签上的二维数组和下面的文字:
[["FileSize", "597262388"], ["Duration_String", "1h 34mn"], ["Duration_string3", "01:34:12.564"], ["Source_Duration", ""], ["Width", "712"], ["Height", "360"]]
我曾尝试这样的代码:
medinfo = "FileSize: 597262388 Duration_String: 1h 34mn Duration_string3: 01:34:12.564 Source_Duration: Width: 712 Height: 360"
mi = medinfo.split(':')
s = []
mi.each do |x|
x2 = x.split(/\W+/).last
x1 = x.gsub(x2, '')
s << x1
s << x2
end
mi_pairs = (s[1..-1].each_slice 2).to_a
但它不在所有情况下都不起作用,我觉得必须有一个更简单的ruby解决方案。
有什么办法可以改变输入结构,或者是来源你控制范围之外?这是可行的,但不是一个解析友好的格式。如果标签/文本对之间有其他分隔符,这将非常有帮助。 –
我同意这不是很解析友好。我希望我能改变这种结构。 – jen