Extrahiere den ersten Buchstaben einer UTF-8-Zeichenfolge mit Lua

7

Gibt es eine Möglichkeit, den ersten Buchstaben einer UTF-8-codierten Zeichenfolge mit Lua zu extrahieren?

Lua unterstützt Unicode nicht korrekt, daher gibt string.sub("ÆØÅ", 2, 2) "?" anstelle von "Ø" zurück.

Gibt es einen relativ einfachen UTF-8-Parsing-Algorithmus, den ich für das String-Byte pro Byte verwenden könnte, um den ersten Buchstaben der Zeichenfolge zu erhalten, sei es ein chinesisches Zeichen oder ein A?

Oder ist dieser Weg zu komplex und erfordert eine riesige Bibliothek?

    
forthrin 05.11.2012, 15:22
quelle

2 Antworten

16

Sie können den ersten Buchstaben aus einer UTF-8-codierten Zeichenfolge mit dem folgenden Code extrahieren:

%Vor%

Weil ein UTF-8-Codepunkt entweder mit einem Byte von 0 bis 127 oder mit einem Byte von 194 bis 244 gefolgt von einem oder mehreren Bytes von 128 bis 191 beginnt.

Sie können iterieren über UTF-8-Codepunkte in ähnlicher Weise:

%Vor%

Beachten Sie, dass beide Beispiele für jeden Buchstaben einen Wert string zurückgeben und nicht den numerischen Wert des Unicode-Codepunkts.

    
prapin 05.11.2012, 18:39
quelle
2

Lua 5.3 bietet eine UTF-8-Bibliothek .

Sie können utf8.codes verwenden, um jeden Codepunkt zu erhalten, und dann utf8.char verwenden, um das Zeichen zu erhalten:

%Vor%

Das funktioniert auch:

%Vor%

Dabei ist utf8.charpattern nur die Zeichenfolge "[%code%-\x7F\xC2-\xF4][\x80-\xBF]*" , damit das Muster mit einer UTF-8-Bytefolge übereinstimmt.

    
Yu Hao 14.01.2015 11:12
quelle

Tags und Links