2016-11-16 4 views
2

Ich möchte eine Zeichenfolge in ein Array geteilt durch mehrere Trennzeichen teilen.Wie teile ich eine Zeichenfolge mit mehreren Trennzeichen in lua?

local delim = {",", " ", "."} 
local s = "a, b c .d e , f 10, M10 , 20,5" 

Ergebnis Tabelle sollte wie folgt aussehen:

{"a", "b", "c", "d", "e", "f", "10", "M10", "20", "5"} 

Trennzeichen können weiße Leerzeichen, Kommas oder Punkte sein. Wenn zwei Trennzeichen wie ein Leerzeichen und ein Komma aufeinander folgen, sollten sie zusammengelegt werden, zusätzliche Leerzeichen sollten ignoriert werden.

Antwort

2

Dieser Code teilt die Zeichenfolge nach Bedarf auf, indem ein Muster des Komplements des Begrenzersatzes erstellt wird.

local delim = {",", " ", "."} 
local s = "a, b c .d e , f 10, M10 , 20,5" 
local p = "[^"..table.concat(delim).."]+" 
for w in s:gmatch(p) do 
     print(w) 
end 

Den Code anpassen, um die "Wörter" in einer Tabelle zu speichern.

+2

Kann die schließende Klammer ']', Prozent '%' und der Strich '-' zu den benutzerdefinierten Begrenzern gehören? –

+1

Ich verwende normalerweise diese Funktion, um solche Probleme zu vermeiden: function escape_magic (s) lokal MAGIC_CHARS_SET = '[() %%. [^ $%] * +% -?]' wenn s == Nil dann Ende zurück (s: gsub (MAGIC_CHARS_SET, '%%% 1')) Ende – tonypdmtr

+0

@EgorSkriptunoff, guter Punkt. – lhf

Verwandte Themen