у меня есть массив из 4 символов = ["0222"] Нужно разделить на 2 группы по 2 человека в каждой.
Нужно получить массив = ["02","22"] Попробуйте разделить, но не могу получить нужный мне результат.
Ваша формулировка несколько сумбурна и неточна. На самом деле у вас есть массив с одним элементом. Этот единственный элемент представляет собой строку из 4 символов. Что вам действительно нужно сделать, так это получить доступ и разделить эту строку.
Вы можете попробовать выполнить регулярное выражение, соответствующее шаблону \d{1,2}
:
nums = "0222".scan(/\d{1,2}/)
puts nums
Это печатает:
02
22
При проверке объектов вы можете использовать p, что напечатает ["02", "22"]
здесь.
Несколько других вариантов для игры:
Использование String#[]
:
array_1 = ["0222"]
array_2 = [array_1[0][0..1], array_1[0][2..-1]] #=> ["02", "22"]
array_2 = [array_1[0][0, 2], array_1[0][2, 2]] #=> ["02", "22"]
Используя String#split
(в этом примере вместе с регулярным выражением, группой захвата, просмотром назад и пределом):
array_1 = ["0222"]
array_2 = array_1[0].split(/(?<=\d{2})/, 2)
#=> ["02", "22"]
Использование String#partition
(в этом примере вместе с методом Array#drop
, чтобы творчески разделить строку в определенном месте, а затем сохранить только это совпадение вместе с оставшимся элементом):
array_1 = ["0222"]
array_2 = array_1[0].partition(/.{2}/).drop(1)
#=> ["02", "22"]
Использование String#split
вместе с String#insert
для принудительного разделения в определенном месте:
array_1 = ["0222"]
array_2 = array_1[0].insert(2, " ").split
#=> ["02", "22"]
Или, может быть, даже используя String#split
и регулярное выражение вместе с Array#[]
вот так:
array_1 = ["0222"]
array_2 = array_1[0].split(/^(..)/)[1, 2]
#=> ["02", "22"]
Много-много потенциальных решений, которые можно использовать в любом количестве комбинаций. Однако я считаю, что лучшим решением является использование метода String#scan
, как уже упоминал @Tim Biegeleisen.
Есть ли причина, по которой ваша 4-символьная строка завернута в массив? Может ли массив содержать более одной строки? Если да, то каков будет ожидаемый результат? А как насчет строк, содержащих менее или более 4 символов?