У меня есть
- Список пар шаблон / замена.
- Длинная строка для замены (несколько килобайт или даже мегабайт).
Все вхождения всех шаблонов должны быть заменены соответствующими текстами замены.Каждый шаблон может существовать в строке более одного раза.
В настоящее время я делаю это, перебирая список пар шаблон / замена и используя string.gsub
каждый раз:
for _, pattern, replace in iter(replace_patterns) do
body = body:gsub(pattern, replace)
end
(iter
- это вспомогательная функция для лучшей итерации по шаблонам.)
Вопрос: Это лучший способ сделать это?Я боюсь, что это будет неэффективно, так как каждый вызов gsub
будет сканировать всю длинную строку.
PS Я прочитал https://stackoverflow.com/a/12865406/5005936 (помог мне сократить использование строки и другие) и https://stackoverflow.com/a/38422229/5005936 (но я не хочу писать нативный код в этом контексте ...)