получение чисел из строк текста - PullRequest
0 голосов
/ 28 февраля 2011

хочу разобрать текстовый файл, где Я получаю числа, которые между скобками, как это:

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 ("("), но это не совсем помогает ... Мне было интересно, есть ли что-то более сложное для этой работы.

Любая помощь приветствуется,

Ted

Ответы [ 3 ]

0 голосов
/ 28 февраля 2011

Хм только что нашел это

http://www.rubular.com/ Я получил нужное мне выражение ((\ D +) - (\ D +))

0 голосов
/ 28 февраля 2011
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
0 голосов
/ 28 февраля 2011

Я хотел бы использовать такие вещи, как Substring / IndexOf и split.

Вы также можете попробовать регулярное выражение, чтобы найти числа, разделенные пробелами между (), но регулярные выражения могут быть немногоболь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...