从文本行获取数字

时间:2011-02-27 23:21:12

标签: ruby

我想解析一个文本文件,在哪里 我得到括号之间的数字 这样:

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(“(”),但这并不是很有效。我想知道是否有更复杂的工作。

任何帮助表示赞赏,

泰德

3 个答案:

答案 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