在Lua中表达一个大(ish)文本字符串

时间:2017-06-19 05:39:10

标签: lua

我是使用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',因为删除它会留下名称'完美的搜索。我仍然需要阅读每一行和其他内容。

1 个答案:

答案 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