Usando um padrão para substituir múltiplos ;
para o único ;
, e outro para remover o último ;
é como isso
local str = "one;two;;three;four;;five;;six;seven;"
local result = str:gsub(';+', ';'):gsub(';*$', '')
Uma maneira possível de usar um único padrão é o seguinte:
local result = (str .. ";;;"):gsub(";+", function(s)
if s == ";" or s == ";;" then
return ";"
else
return ""
end
end)
O que estou tentando fazer é anexar três ;
até o final da corda, então qualquer um ou dois ;
deve ser substituído por um ;
. E mais ;
(Pode ser três ou quatro e deve estar no final) é substituído para a corda vazia.
Eu preferiria a solução com dois padrões, pois é mais claro.