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?
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.
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:
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.