Lua - wandelt String in Tabelle um

7

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:

  • a="Text"
  • - Umwandlung von String (a) in Tabelle (b)
  • - Zeige Tabelle (b)
  • b = {t, e, x, t}}
user3074258 06.12.2013, 12:02
quelle

4 Antworten

9

Sie könnten die Funktion string.gsub

verwenden %Vor%     
moteus 06.12.2013, 12:09
quelle
7

Indexieren Sie einfach jedes Symbol und setzen Sie es an die gleiche Stelle in der Tabelle.

%Vor%     
Oleg V. Volkov 06.12.2013 13:22
quelle
3

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:

%Vor%

Ü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:

%Vor%     
Philipp Gesang 06.12.2013 16:56
quelle
0

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.

    
Prashant Gaur 06.12.2013 13:44
quelle

Tags und Links