myArray = ["1324","11455","2234","55345", "1234", "54321"]
如何将其分成5个数组,每个数组包含该数组中5个字符中的一个?
通缉结果
firstCharacterArray => ["1","1","2","5","1","5"]
...
fifthCharacterArray => ["","5","","5","","1"]
答案 0 :(得分:2)
你可以这样做:
def extract_n_character(arr, n)
arr.map { |c| c[n] || '' }
end
extract_n_character(myArray, 0)
# => ["1", "1", "2", "5", "1", "5"]
extract_n_character(myArray, 4)
# => ["", "5", "", "5", "", "1"]
答案 1 :(得分:1)
first_character_array = myArray.map{ |e| e[0] }.map{ |e| e.nil? ? "" : e }
=> ["1", "1", "2", "5", "1", "5"]
...
fifth_character_array = myArray.map{ |e| e[4] }.map{ |e| e.nil? ? "" : e }
=> ["", "5", "", "5", "", "1"]
答案 2 :(得分:1)
我尝试以此为出发点:
my_array = ["1324", "11455", "2234", "55345", "1234", "54321"]
max_size = my_array.max_by{ |s| s.size }.size # => 5
arrays = my_array.map{ |s| s.split('') }.map{ |a|
(a.size < max_size) ?
a += ([''] * (max_size - a.size)) :
a
}
这是arrays
的样子:
arrays
# => [["1", "3", "2", "4", ""],
# ["1", "1", "4", "5", "5"],
# ["2", "2", "3", "4", ""],
# ["5", "5", "3", "4", "5"],
# ["1", "2", "3", "4", ""],
# ["5", "4", "3", "2", "1"]]
以下是如何获得所需的数组:
arrays.transpose
# => [["1", "1", "2", "5", "1", "5"],
# ["3", "1", "2", "5", "2", "4"],
# ["2", "4", "3", "3", "3", "3"],
# ["4", "5", "4", "4", "4", "2"],
# ["", "5", "", "5", "", "1"]]
或者:
arrays.shift.zip(*arrays)
# => [["1", "1", "2", "5", "1", "5"],
# ["3", "1", "2", "5", "2", "4"],
# ["2", "4", "3", "3", "3", "3"],
# ["4", "5", "4", "4", "4", "2"],
# ["", "5", "", "5", "", "1"]]
这闻起来像家庭作业或教程任务。如果是家庭作业,请考虑教师可以轻松搜索并找到这里给出的答案。
答案 3 :(得分:0)
首先,我使用length
获取数组中最长字符串的Enumerable#max_by
。
然后,我会用String#ljust
填充较短的字符串(因此它们都具有相同的长度)并使用String#chars
来获取每个字符串的字符数组。
最后,我会transpose
这个二维数组的行和列。
array = ["1324","11455","2234","55345", "1234", "54321"]
max = array.max_by(&:length).length
array.map { |s| s.ljust(max).chars }.transpose
#=> [["1", "1", "2", "5", "1", "5"],
# ["3", "1", "2", "5", "2", "4"],
# ["2", "4", "3", "3", "3", "3"],
# ["4", "5", "4", "4", "4", "2"],
# [" ", "5", " ", "5", " ", "1"]]
答案 4 :(得分:0)
你可以尝试这样的事情。
firstCharacterArray = []
firstCharacterArray = myArray.each{|firstCharacterArray.push(a[0])}