Ruby: получить из строки «части одной строки» - это между - PullRequest
0 голосов
/ 24 января 2012

У меня есть массив строк

["2 192.168.1.101 10000",56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]

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

["2","56","3","1"] , ["192.168.1.101","192.168.1.101","192.168.1.101","192.168.1.101"] and
["10000","10001","10002","10003"]

Мой вопрос, как получить этих персонажей?

Для первого массива это будет что-то вроде "сначала", "" получит пустое пространство < И для второго массива, это было бы что-то вроде от "" до "" получить < И для третьего что-то вроде от "" до последнего получит <</p>

Я надеюсь, что мой вопрос хорошо понят, и я получил несколько ответов заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 24 января 2012

Немного короче, чем ответ Джефа:

data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]
data.map(&:split).transpose

String#split разделяется на пробел по умолчанию, и когда вам просто нужно вызвать метод для каждой записи массива, вместо map { |x| x.do_something } вы можете использовать более короткий map(&:do_something).

3 голосов
/ 24 января 2012
data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]
data.collect {|value| value.split(" ")}.transpose
0 голосов
/ 24 января 2012

Быстрая и подробная версия:

data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]
result = [[],[],[]]
data.each do |element|
  parts = element.split
  result[0] << parts[0]
  result[1] << parts[1]
  result[2] << parts[2]
end

puts result.inspect
...