2017-06-19 3 views
-1

Ich bin ein hobbist Modder für ein Spiel namens TableTop Simulator, der Lua verwendet.Eine große (ish) Zeichenkette in Lua schreiben

Ich habe eine einzelne Zeichenfolge mit einer Liste von Daten in mehreren Zeilen, die ein Kartenspiel darstellt.

Example: 
2x Blackwood File Clerk 
1x Patrol Wagon 
3x Short Fuse 
1x Adult Deep One 
1x Deep One Assault 
1x Shadowed Reef 
3x Agoraphobia 

Was ich tun muss, ist, dass die Zeichenfolge in ein Format ausdrückte bekommen, die ich verwenden können, um dann die Karten zu nehmen und die Menge aus den Decks zu bauen.

Ich dachte an versuchen, irgendeine Art von Tisch zu machen, die so aussieht ..

deckList{} 
    deckList[1].name = 'Blackwood File Clerk' 
    deckList[1].quantity= 2 
    deckList[2].name = 'Patrol Wagon' 
    deckList[2].quantity= 1 

etc etc ....

dann kann ich den Namen Zeichenfolge verwenden, um die passende Karte zu finden und dann die Menge Wert, um so viele Kopien davon zu nehmen.

Das Problem, das ich habe, ist, dass ich nicht weiß, wie das geht ... Ich muss irgendwie jede Zeile trennen und dann den Wert und Zeug rausziehen. Ich denke, da es immer 1,2,3 ist, anstatt zu schneiden und komplex zu sein, kann ich eine Linie in "1x" umwandeln, da das Entfernen diesen "Namen" perfekt zum Suchen verlässt. Trotzdem muss ich jede Zeile und auch die Sachen lesen.

+0

Für Ideen, schauen Sie in [ 'string.gmatch'] (https://devdocs.io/lua~5.3/index#pdf-string.gmatch) – hjpotter92

+1

Auch ist es Lua (oder lua), nicht LUA. Überprüfen Sie https://www.lua.org/about.html – hjpotter92

Antwort

2
local str = [[ 
2x Blackwood File Clerk 
1x Patrol Wagon 
3x Short Fuse 
1x Adult Deep One 
1x Deep One Assault 
1x Shadowed Reef 
3x Agoraphobia]] 

local deckList = {} 
for line in str:gmatch"[^\r\n]+" do 
    local qty, name = line:match"^(%d+)x%s+(.-)%s*$" 
    table.insert(deckList, {name = name, quantity = tonumber(qty)}) 
end 
Verwandte Themen