Ich möchte String Text in Tabelle umwandeln und dieser Text muss in Zeichen aufgeteilt werden. Jedes Zeichen muss sich in einem separaten Wert der Tabelle befinden, zum Beispiel:
Indexieren Sie einfach jedes Symbol und setzen Sie es an die gleiche Stelle in der Tabelle.
%Vor%Die eingebaute string -Bibliothek behandelt Lua-Strings als Byte-Arrays. Eine Alternative, die auf Multibyte-Zeichen (Unicode) funktioniert, ist die Unicode Bibliothek entstand im Selene-Projekt. Sein Hauptverkaufsargument ist, dass es als Drop-In-Ersatz verwendet werden kann für die String-Bibliothek, die meisten String-Operationen "magisch" Unicode-fähig.
Wenn Sie keine Abhängigkeiten von Drittanbietern hinzufügen möchten, können Sie dies leicht tun implementiert werden mit LPeg . Hier ist ein Beispielsplitter:
%Vor% Dieser Ausschnitt definiert die Funktion split_utf8()
, die eine Tabelle erstellt
von UTF8-Zeichen (als Lua-Zeichenfolgen), gibt jedoch nil
zurück, wenn die Zeichenfolge
ist keine gültige UTF-Sequenz.
Sie können diesen Testcode ausführen:
Übrigens, das Erstellen einer Tabelle mit LPeg ist wesentlich schneller als das Anrufen
table.insert()
wiederholt.
Hier sind Statistiken für die Aufteilung von Gogols Toten Seelen (in
Russisch, 1023814 byte roh, 571395 Zeichen UTF) auf meiner Maschine:
Sie können unten einfach programmieren, um dies zu erreichen.
%Vor% string.sub.
string.sub(s, i [, j])
Gibt eine Teilzeichenfolge der übergebenen Zeichenfolge zurück. Die Teilzeichenfolge beginnt bei i. Wenn das dritte Argument j nicht angegeben ist, endet die Teilzeichenfolge am Ende der Zeichenfolge. Wenn das dritte Argument angegeben wird, endet die Teilzeichenfolge bei und schließt j ein.