Простой способ заключается в использовании string.gsub
заменить шаблон соответствия с захваченной строкой и ваш сепаратором. Полученная строка будет иметь предыдущий разделитель, который можно удалить, взяв фрагмент строки с начала плюс длину разделителя.
См. §6.4.1 – Patterns для лучшего понимания соответствия шаблонов.
local function sep (str, patt, re)
return str:gsub(patt, '%' .. re .. '%1'):sub(1 + #re)
end
print(sep('7661722061737472696e673d226c6f6c223b', '%x%x', '%'))
--> 76%61%72%20%61%73%74%72%69%6e%67%3d%22%6c%6f%6c%22%3b
Альтернативным способом было бы разделить строку в таблицу, а затем использовать table.concat
присоединиться таблицу в строку.
Исчерпывающий способ состоит в том, чтобы подсчитывать каждый символ nth в цикле и принимать строковые фрагменты, объединяя результат до сих пор и разделитель.