例えば:
local a = "Lua"
local u = "Луа"
print(a:len(), u:len())
出力:
3 6
utf-8文字列で文字数を出力するにはどうすればよいですか?
LuaでUnicode/UTF-8を使用する必要がある場合、Luaは8ビット文字列でのみ機能するため、外部ライブラリを使用する必要があります。そのようなライブラリの1つがslnunicodeです。文字列の長さを計算する方法のサンプルコード:
local unicode = require "unicode"
local utf8 = unicode.utf8
local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u)) --> 3 3
Lua 5.3ではutf8.len
、UTF-8文字列の長さを取得するために使用できます。
local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u))
出力:3 3
あなたはそうしない。
LuaはUnicodeに対応していません。表示されるのはバイトの文字列だけです。長さを要求すると、そのバイト文字列の長さがわかります。Luaを使用してUnicode文字列と何らかの方法で対話する場合は、それらの対話を実装するLuaモジュールを作成するか、そのようなモジュールをダウンロードする必要があります。
もう1つの方法は、ネイティブのos UTF-8文字列関数をラップし、os関数を使用して手間のかかる作業を行うことです。これは、使用するOSによって異なります。これはOSXで実行しましたが、うまく機能します。Windowsも同様です。もちろん、コマンドラインからスクリプトを実行したいだけの場合は、別のワームの缶が開きます。アプリによって異なります。