Ruby преобразует строку в массив массивов - PullRequest
0 голосов
/ 18 марта 2019

У меня есть следующая строка.

key = "John Clark\nDallas\nSystem Engineer\nGlobal Edge\nWage 2\nY\n1\nRobin James\nCleveland\nArchitect\nMaxSys\nWage 3\nY\n0\nJoseph Neils\nLittle Rock\nDB Admin\nTech Sys\nWage 2\nY\n1\n"

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

[["John Clark","Dallas","System Engineer","Global Edge","Wage 2","Y","1"],["Robin James","Cleveland","Architect","MaxSys","Wage 3","Y","0"],["Joseph Neils","Little Rock","DB Admin","Tech Sys","Wage 2","Y","1"]]

Если число строк в key не делится поровну на 7, последний массив должен содержать остатки.

Как я могу сделать этот Ruby?

Ответы [ 3 ]

1 голос
/ 18 марта 2019

Вы можете разделить вашу строку следующим образом:

string = "John Clark\nDallas\nSystem Engineer\nGlobal Edge\nWage 2\nY\n1\nRobin James\nCleveland\nArchitect\nMaxSys\nWage 3\nY\n0\nJoseph Neils\nLittle Rock\nDB Admin\nTech Sys\nWage 2\nY\n1\n"

string.split("\n").each_slice(7).to_a
#=> [["John Clark", "Dallas", "System Engineer", "Global Edge", "Wage 2", "Y", "1"], ["Robin James", "Cleveland", "Architect", "MaxSys", "Wage 3", "Y", "0"], ["Joseph Neils", "Little Rock", "DB Admin", "Tech Sys", "Wage 2", "Y", "1"]]
1 голос
/ 18 марта 2019

Вы, похоже, не используете определяемую вами переменную value, но вы можете преобразовать строку, которую вы присвоили key, в вывод, который вы указали, используя split и each_slice:

array_of_values = key.split("\n")
# => ["John Clark", "Dallas", ... ]

groups_of_seven = array_of_values.each_slice(7)
# => #<Enumerator: ["John Clark", "Dallas", ...]

groups_of_seven.first
# => ["John Clark", "Dallas", "System Engineer", "Global Edge", "Wage 2", "Y", "1"]
0 голосов
/ 18 марта 2019

Вы просто разбиваете строку разделенных новой строкой полей.У объекта String в Ruby есть метод split, который делает это.

my_string = "John Clark\nDallas\nSystem Engineer\nGlobal Edge\nWage 2\nY\n1\nRobin James\nCleveland\nArchitect\nMaxSys\nWage 3\nY\n0\nJoseph Neils\nLittle Rock\nDB Admin\nTech Sys\nWage 2\nY\n1\n"
my_string.split("\n")

дает вам массив строк, подобный тому, который вы хотите.Затем вы можете объединить эти массивы в другой массив.

Здесь есть документация по методу split: https://ruby -doc.org / core-2.6.2 / String.html # method-i-split

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