我是使用Lua的名为TableTop Simulator的游戏的hobbest modder。
我有一个字符串,其中包含代表一副牌的多行数据列表。
Example:
2x Blackwood File Clerk
1x Patrol Wagon
3x Short Fuse
1x Adult Deep One
1x Deep One Assault
1x Shadowed Reef
3x Agoraphobia
我需要做的是将这个字符串变成一种措辞格式,然后我可以使用它来取出卡片和数量来构建套牌。
我正在考虑尝试制作一些看起来像这样的桌子。
deckList{}
deckList[1].name = 'Blackwood File Clerk'
deckList[1].quantity= 2
deckList[2].name = 'Patrol Wagon'
deckList[2].quantity= 1
等等......
然后我可以使用名称字符串查找匹配的卡片,然后使用数量值来获取它的许多副本。
我遇到的问题是我不知道如何做到这一点......我需要以某种方式分离每一行,然后提取价值和东西。我认为因为它始终是1,2,3,而不是切割和复杂,我可以将一条线转换为' 1x',因为删除它会留下名称'完美的搜索。我仍然需要阅读每一行和其他内容。
答案 0 :(得分: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