Verwenden Sie ein Muster, um mehrere zu ersetzen ;
Single ;
, und ein anderer, um das letzte zu entfernen ;
ich mag das
local str = "one;two;;three;four;;five;;six;seven;"
local result = str:gsub(';+', ';'):gsub(';*$', '')
Eine mögliche Möglichkeit, ein einzelnes Muster zu verwenden, ist wie folgt:
local result = (str .. ";;;"):gsub(";+", function(s)
if s == ";" or s == ";;" then
return ";"
else
return ""
end
end)
Ich versuche, drei anzuhängen ;
bis zum Ende der Saite, also irgendwelche oder zwei ;
sollte durch eins ersetzt werden ;
. Und mehr ;
(könnte drei oder vier sein und es muss am Ende sein) wird in leere Zeichenfolge ersetzt.
Ich würde die Lösung mit zwei Mustern bevorzugen, da sie klarer ist.