-2

我的数组是["Mehmet,1,3,0,0,0\n", "Veli,2,1,2,0,2\n", "Ali,0,1,1,0,0\n"].

我想声明二维数组,例如array[1][2]名称的第一维和注释的第二维。

我怎样才能做到?

文本.txt 是

穆罕默德,1,3,0,0,0 维利,2,1,2,0,2 阿里,0,1,1,0,0

我的代码是

filename = "text.txt"
results = []
File.new(filename, "r").each { |line| results << line }

results.inject([]){|ar,s|
ar.concat(s.split(/,/))}


puts results.inspect
4

4 回答 4

1
array = File.read("text.txt").split
# => ["Mehmet,1,3,0,0,0", "Veli,2,1,2,0,2", "Ali,0,1,1,0,0"]

array.map { |ar| x, *xs = ar.split(","); [x, xs.join] }
# => [["Mehmet", "13000"], ["Veli", "21202"], ["Ali", "01100"]]

或者,如果您不想加入第二个子阵列

array.map { |ar| x, *xs = ar.split(","); [x, xs] }
# => [["Mehmet", ["1", "3", "0", "0", "0"]],
#     ["Veli", ["2", "1", "2", "0", "2"]],
#     ["Ali", ["0", "1", "1", "0", "0"]]]
于 2012-12-11T07:25:37.853 回答
1

要修改您第一次发布的集合:

data = ["Mehmet,1,3,0,0,0\n", "Veli,2,1,2,0,2\n", "Ali,0,1,1,0,0\n"]
data = data.map {|x| y = x.split(","); [y.delete_at(0), y] }

=> [["Mehmet", ["1", "3", "0", "0", "0\n"]],
 ["Veli", ["2", "1", "2", "0", "2\n"]],
 ["Ali", ["0", "1", "1", "0", "0\n"]]]

puts data[0][0] 
=> Mehmet
于 2012-12-11T07:42:53.140 回答
0

二维数组表示数组的数组。所以,简单地说,它可以是:

board = [ [ 1, 2, 3 ],[ 4, 5, 6 ]]
于 2012-12-11T07:24:51.273 回答
0

你在寻找这样的东西吗?

array = ["Mehmet,1,3,0,0,0\n", "Veli,2,1,2,0,2\n", "Ali,0,1,1,0,0\n"]
new_array = array.map do |elem|
  splited = elem.split(/[,\s]/)
  [splited.shift, splited]
end
# => [["Mehmet", ["1", "3", "0", "0", "0"]],
#     ["Veli", ["2", "1", "2", "0", "2"]],
#     ["Ali", ["0", "1", "1", "0", "0"]]]
于 2012-12-11T07:41:58.943 回答