باستخدام نمط واحد لاستبدال متعدد ;
إلى واحد ;
, وآخر لإزالة آخر ;
مثل هذا
local str = "one;two;;three;four;;five;;six;seven;"
local result = str:gsub(';+', ';'):gsub(';*$', '')
إحدى الطرق الممكنة لاستخدام نمط واحد مثل هذا:
local result = (str .. ";;;"):gsub(";+", function(s)
if s == ";" or s == ";;" then
return ";"
else
return ""
end
end)
ما أحاول فعله هو إلحاق ثلاثة ;
حتى نهاية السلسلة ، لذلك أي واحد أو اثنين ;
يجب استبدال واحد ;
. و اكثر ;
(يمكن أن يكون ثلاثة أو أربعة ويجب أن يكون في النهاية) يتم استبداله بسلسلة فارغة.
أفضل الحل مع نمطين لأنه أكثر وضوحا.