我想解析一个文本文件,在哪里 我得到括号之间的数字 这样:
1 2 3 (4 - 7) 8 9
1 3 8 (7 - 8) 2 1
1 2 (8 - 10) 3 2
should return an array for each:
array1:
4
7
8
array2:
7
8
10
我正在考虑为每一行使用split,比如line.split(“(”),但这并不是很有效。我想知道是否有更复杂的工作。
任何帮助表示赞赏,
泰德
答案 0 :(得分:0)
我会研究使用像Substring / IndexOf这样的东西以及拆分。
您也可以尝试使用正则表达式来查找()之间的空格分隔的数字,但正则表达式可能会有点痛苦。
答案 1 :(得分:0)
嗯刚发现这个
http://www.rubular.com/我得到了我需要的表达 ((\ d +) - (\ d +))
答案 2 :(得分:0)
data = <<EOS
1 2 3 (4 - 7) 8 9
1 3 8 (7 - 8) 2 1
1 2 (8 - 10) 3 2
EOS
lines = data.split("\n")
def get_inner(lines)
lines.map { |line| line.partition("(")[2].partition(")")[0].split(" - ")}
end
a1, a2 = *[get_inner(lines).map {|a| a.first },get_inner(lines).map {|a| a.last }]
puts a1
puts a2
# =>
4
7
8
7
8
10