Zum Beispiel:Druck Anzahl der Zeichen in UTF-8-String
local a = "Lua"
local u = "Луа"
print(a:len(), u:len())
Ausgang:
3 6
Wie kann ich Ausgang Anzahl der Zeichen in utf-8-String?
Zum Beispiel:Druck Anzahl der Zeichen in UTF-8-String
local a = "Lua"
local u = "Луа"
print(a:len(), u:len())
Ausgang:
3 6
Wie kann ich Ausgang Anzahl der Zeichen in utf-8-String?
Wenn Sie in Lua Unicode/UTF-8 verwenden müssen, müssen Sie externe Bibliotheken verwenden, da Lua nur mit 8-Bit-Strings arbeitet. Eine solche Bibliothek ist slnunicode. Beispielcode, wie die Länge der Zeichenfolge zu berechnen:
local unicode = require "unicode"
local utf8 = unicode.utf8
local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u)) --> 3 3
Sie nicht.
Lua ist nicht Unicode-bewusst. Alles, was es sieht, ist eine Bytefolge. Wenn Sie nach der Länge fragen, erhalten Sie die Länge dieser Byte-Zeichenfolge. Wenn Sie Lua für die Interaktion mit Unicode-Zeichenfolgen verwenden möchten, müssen Sie entweder ein Lua-Modul schreiben, das diese Interaktionen implementiert, oder ein solches Modul herunterladen.
Eine weitere Alternative besteht darin, die nativen os UTF-8-String-Funktionen zu umschließen und die OS-Funktionen zu verwenden, um das Heavy Lifting durchzuführen. Dies hängt davon ab, welches Betriebssystem Sie verwenden - ich habe dies unter OSX getan und es funktioniert ein Vergnügen. Windows wäre ähnlich. Natürlich öffnet es eine weitere Dose Würmer, wenn Sie nur ein Skript von der Kommandozeile ausführen möchten - abhängig von Ihrer App.
In Lua 5.3 können Sie utf8.len
verwenden, um die Länge eines UTF-8-String zu erhalten:
local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u))
Ausgang: 3 3
Siehe zum Beispiel http://lua-users.org/wiki/ValidateUnicodeString – lhf