извлечь данные из строки в lua - подстроки и числа - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь сформулировать строку для хобби-проекта, и я самоучка из отрывков кода с этого сайта и с трудом решает эту проблему.Я надеюсь, что вы, ребята, можете помочь.

У меня есть большая строка, содержащая много строк, и каждая строка имеет определенный формат.

Я могу получить каждую строку в строке, используя этот код ...

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

Каждая строка выглядит примерно так ...

3x Ривенделл Менестрель (Охота за Голлумом)

Что я пытаюсьдля этой строки нужно создать таблицу, которая выглядит примерно так:

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"

Любые идеи, как получить "TheОхота на Голлума "текст оттуда, включая пробелы?

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте один шаблон, охватывающий все поля:

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

Шаблон гласит: захватить серию цифр до x, пропустить пробел, захватить все до пробела, затем открывать скобки и, наконец, захватить вседо закрывающей скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...