我在ruby中有一个字符串,如下所示:
str = "AABBCCDDEEFFGGHHIIJJ01020304050607080910"
# 20 letters and 20 numbers in this case
我想把这个分成两半,我可以这样做:
str[0, str.length/2]
或
str.split(0, str.length/2)
之后,我需要使用chars制作数组,但每个元素的长度为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)
之类的东西,字符串的长度可能会随时改变。
答案 0 :(得分:25)
这个怎么样?
str.chars.each_slice(2).map(&:join)
答案 1 :(得分:17)
您可以使用scan方法:
1.9.3p194 :004 > a = 'AABBCCDDEEC'
=> "AABBCCDDEEC"
1.9.3p194 :005 > a.scan(/.{1,2}/)
=> ["AA", "BB", "CC", "DD", "EE", "C"]
答案 2 :(得分:-1)
2.1.0 :642 > "d852".scan(/../)
=> ["d8", "52"]