2012-12-11 4 views
-2

Mon tableau est ["Mehmet,1,3,0,0,0\n", "Veli,2,1,2,0,2\n", "Ali,0,1,1,0,0\n"].Créer un tableau à deux dimensions

Je veux déclarer tableau bidimensionnel comme array[1][2] avec la première dimension pour le nom et le second pour la note.

Comment puis-je le faire?

Text.txt est

Mehmet, 1,3,0,0,0 Veli, 2,1,2,0,2 Ali, 0,1,1,0,0

Mon code est

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

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


puts results.inspect 
+3

Vous devriez commencer à formuler votre question mieux. Publiez un résultat attendu, par exemple. –

+0

Pouvez-vous expliquer? Je ne comprends pas parce que je suis nouveau sur ruby. – SemihY

+1

Voulez-vous déclarer un tableau 2D dans un code ou voulez-vous transformer votre tableau initial en un tableau 2D? –

Répondre

0

Le tableau 2d signifie un tableau de tableaux. Donc, il suffit peut ressembler à:

board = [ [ 1, 2, 3 ],[ 4, 5, 6 ]] 
+2

Cela ne répond pas à la question. –

+1

Désolé pour malentendu. Mais je pense que la question n'est pas assez claire :) –

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"]] 

Ou, si vous ne voulez pas participer au deuxième sous-ensemble

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"]]] 
+1

+1 J'aime ça. Bonne utilisation de splat. –

0

Vous cherchez quelque chose comme ça?

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"]]] 
1

Pour modifier l'ensemble que vous devez d'abord posté:

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 
Questions connexes