Sie haben einige Fehler in Ihrem Code. Sie öffnen zuerst die Datei a.txt
und legen sie dann für die Standardeingabe fest. Sie brauchen das Öffnen nicht(). Aber ich empfehle die Datei zu öffnen und auf sie arbeiten, mit dem lines()
Iterator auf die Datei:
array = {}
file = io.open("a.txt","r")
i = 0
for line in file:lines() do
array[i]=line
i=i+1
end
Weiterhin mit Ihrer Methode, bekommt man nicht das Array Sie ({ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }
) gewünscht, sondern eine Reihe enthält Strings als Elemente: { "1 2 3", "4 5 6", "7 8 9" }
. Um letzteres zu erhalten, müssen Sie die gelesene Zeichenfolge analysieren. Eine einfache Möglichkeit, dies zu tun ist string.match
mit Aufnahmen zu verwenden:
array ={}
file = io.open("a.txt","r")
for line in file:lines() do
-- extract exactly three integers:
local t = { string.match(line, "(%d+) (%d+) (%d+)")) }
table.insert(array, t) -- append row
end
Siehe https://www.lua.org/manual/5.3/manual.html#pdf-string.match. Für eine beliebige Anzahl von ganzen Zahlen (oder anderen Zahlen) in jeder Zeile können Sie eine Schleife zusammen mit string.gmatch() verwenden:
array ={}
file = io.open("a.txt","r")
for line in file:lines() do
local t = {}
for num in string.gmatch(line, "(%d+)") do
table.insert(t, num)
end
table.insert(array, t)
end
Dies ist genau das, was ich suche. Vielen Dank! – ledien
Gern geschehen! Wenn Sie meine Antwort mögen, seien Sie nett und akzeptieren Sie es :) – pschulz
Sie können 'für Zeile in io.lines (" a.txt ") tun'. – lhf