Подтвердить что ты не робот

Как разбить строку на x равными частями в рубине

У меня есть строка в ruby, как это:

str = "AABBCCDDEEFFGGHHIIJJ01020304050607080910"
# 20 letters and 20 numbers in this case

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

str[0, str.length/2]

или

str.split(0, str.length/2)

После этого мне нужно создать массивы с символами, но с длиной 2 для каждого элемента, например:

["AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ"],
[01, 02, 03, 04, 05, 06, 07, 08, 09, 10]

Проблема заключается в том, что я не могу найти сжатый способ преобразования этой строки. Я могу сделать что-то вроде этого

arr = []
while str.length > 0 do
  arr << str[0, 1]
  str[0, 1] = ""
end

но я скорее хочу что-то вроде str.split(2), и длина строки может измениться в любое время.

4b9b3361

Ответ 1

Как насчет этого?

str.chars.each_slice(2).map(&:join)

Ответ 2

Вы можете использовать метод scan:

1.9.3p194 :004 > a = 'AABBCCDDEEC'
 => "AABBCCDDEEC" 
1.9.3p194 :005 > a.scan(/.{1,2}/)
 => ["AA", "BB", "CC", "DD", "EE", "C"] 

Ответ 3

2.1.0 :642 > "d852".scan(/../) => ["d8", "52"]