Domanda

Ho bisogno di caricare il file alle variabili di Lua.

Diciamo che ho ricevuto

name address email

Non c'è spazio tra ogni. Ho bisogno del file di testo che ha x-molti di tali linee in esso per essere caricato in un qualche tipo di oggetto - o almeno quella linea deve essere tagliato ad array di stringhe separate da spazi

.

E 'questo tipo di lavoro possibile in Lua e come devo fare questo? Sono abbastanza nuovo per Lua, ma non riuscivo a trovare qualcosa di rilevante anche su Internet.

È stato utile?

Soluzione

Per espandere sulla risposta di uroc:

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

Questo però non copre il caso che i nomi hanno spazi in loro.

Altri suggerimenti

Si vuole leggere su Lua modelli , che fanno parte della biblioteca . Ecco un esempio di funzione (non testato):

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

Questa funzione appena prende tre stringhe composte da non-spazio caratteri (%S). Una funzione vera e propria avrebbe qualche errore di controllo per assicurarsi che il modello in realtà corrisponde.

Se si ha il controllo sul formato del file di input, si sarà meglio memorizzare i dati in formato Lua come descritto qui .

In caso contrario, utilizzare il io biblioteca per aprire il file e quindi utilizzare il biblioteca stringa piace:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top