Teilen Sie einen String mit string.gmatch () in Lua

Es gibt hier einige Diskussionen und Utility-Funktionen zum Teilen von Strings, aber ich benötige einen Ad-hoc-Einzeiler für eine sehr einfache Aufgabe.

Ich habe die folgende Zeichenfolge:

local s = "one;two;;four"

Und ich möchte es aufteilen";". Ich will irgendwann gehen und holen{ "one", "two", "", "four" } im Gegenzug.

Also habe ich versucht:

local s = "one;two;;four"

local words = {}
for w in s:gmatch("([^;]*)") do table.insert(words, w) end

Aber das Ergebnis (diewords Tabelle) ist{ "one", "", "two", "", "", "four", "" }. Das ist sicher nicht was ich will.

Wie ich bereits bemerkte, gibt es hier einige Diskussionen über das Aufteilen von Strings, aber sie haben "langwierige" Funktionen und ich brauche etwas Prägnantes. Ich brauche diesen Code für ein Programm, in dem ich die Vorzüge von Lua zeige, und wenn ich eine lange Funktion hinzufüge, um etwas so Triviales zu tun, würde das gegen mich gehen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage