переменная lua в сопоставлении с образцом - PullRequest
5 голосов
/ 14 июля 2011

Мне просто интересно, можно ли поместить переменную в сопоставление с образцом в Lua. Вроде что-то похожее на следующее:

var = "hello"
pattern = string.match(datasource, "(var)%s(a%+)")

Причина, по которой мне нужно это сделать, заключается в том, что переменная "var" будет периодически меняться. (это будет в цикле)

Приветствия заранее

Ответы [ 3 ]

9 голосов
/ 14 июля 2011

Lua не обрабатывает интерполяцию строк внутри кавычек.Вместо этого вам нужно объединить части с var в качестве ссылки на var, а остальные в виде строк кавычек.

"("..var..")%s(a%+)" начинается с "(" как строкового литерала, объединяет переменную, затем завершает остальную часть строки строковым литералом.

5 голосов
/ 14 июля 2011

Используйте "("..var..")%s(a%+)" вместо.

1 голос
/ 15 февраля 2018

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

Я прочитал файл с разделителем ':' (name: tel) и хочу выполнить поиск по имени вфайл и имя и номер телефона в качестве ответа.

local FileToSearch = h:read'*a' -- Read all the file
var = io.read() -- ask the name
string.gmatch(FileToSearch, ''..var..': '..'%d+') -- search for name, concatenate with number 
...