Frage

Ich brauche Datei zu Lua Variablen zu laden.

Nehmen wir an, ich habe

name address email

Es gibt Raum zwischen den einzelnen. Ich brauche die Textdatei, die x-viele solcher Linien hat darin in eine Art von Objekt geladen werden - oder zumindest die eine Zeile werden durch Leerzeichen getrennt, um Array von Strings geschnitten werden

.

Ist diese Art von Arbeit möglich in Lua und wie soll ich das tun? Ich bin ziemlich neu in Lua, aber ich kann nichts relevant im Internet finden.

War es hilfreich?

Lösung

Um auf uroc Antwort erweitern:

local file = io.open("filename.txt")
if file then
    for line in file:lines() do
        local name, address, email = unpack(line:split(" ")) --unpack turns a table like the one given (if you use the recommended version) into a bunch of separate variables
        --do something with that data
    end
else
end
--you'll need a split method, i recommend the python-like version at http://lua-users.org/wiki/SplitJoin
--not providing here because of possible license issues

Dies wird jedoch nicht für den Fall, dass Ihre Namen Leerstellen enthalten.

Andere Tipps

Sie wollen über Lua Muster , das Teil lesen sind der String-Bibliothek . Hier ist ein Beispiel-Funktion (nicht getestet):

function read_addresses(filename)
  local database = { }
  for l in io.lines(filename) do
    local n, a, e = l:match '(%S+)%s+(%S+)%s+(%S+)'
    table.insert(database, { name = n, address = a, email = e })
  end
  return database
end

Diese Funktion greift nur drei Teil bestehend aus nach Leerzeichen (%S) Zeichen. Eine echte Funktion würde einige Fehler haben die Überprüfung der Muster, um sicherzustellen, tatsächlich entspricht.

Wenn Sie die Kontrolle über das Format der Eingabedatei haben, werden Sie die Daten in Lua-Format besser als beschriebene Speicherung hier .

Wenn nicht, verwenden Sie die io Bibliothek die Datei zu öffnen und dann die Verwendung String-Bibliothek mögen:

local f = io.open("foo.txt")
while 1 do
    local l = f:read()
    if not l then break end
    print(l) -- use the string library to split the string
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top