从lua中提取数据 - SubStrings和Numbers

时间:2018-05-21 08:20:24

标签: lua

我正在尝试为一个爱好项目说出一个字符串,我从这个网站的代码剪片中自学,并且很难解决这个问题。我希望你们能帮忙。

我有一个大字符串,包含很多行,每行都有一定的格式。

我可以使用此代码获取字符串中的每一行......

for line in string.gmatch(deckData,'[^\r\n]+') do
    print(line) end

每一行看起来像这样......

  

3x Rivendell Minstrel(寻找咕噜)

我要做的是为上面一行制作一个看起来像这样的表。

table = {}
  table['The Hunt for Gollum'].card = 'Rivendell Minstrel'
  table['The Hunt for Gollum'].count = 3

所以我的想法是提取括号内的所有内容,然后提取数字值。然后删除该行中的前4个字符,因为它总是'1x','2x'或'3x'

我尝试过很多东西......就像这样...

word=str:match("%((%a+)%)")

但如果有空格则会出错......

我的测试代码目前看起来像这样......

line = '3x  Rivendell Minstrel (The Hunt for Gollum)'
    num = line:gsub('%D+', '')
    print(num) -- Prints "3"

card2Fetch = string.sub(line, 5)
    print(card2Fetch) -- Prints "Rivendell Minstrel (The Hunt for Gollum)"

key = string.gsub(card2Fetch, "%s+", "") -- Remove all Spaces
    key=key:match("%((%a+)%)") -- Fetch between ()s
    print(key) -- Prints "TheHuntforGollum"

任何有关如何获取“寻找咕噜咕噜”文本的想法,包括空格?

1 个答案:

答案 0 :(得分:3)

尝试捕获所有字段的单一模式:

x,y,z=line:match("(%d+)x%s+(.-)%s+%((.*)%)")
t = {}
t[z] = {}
t[z].card = y
t[z].count = x

模式读取:在x之前捕获一组数字,跳过空格,捕获所有内容,直到空格后跟左括号,最后捕获所有内容,直到括号为止。