4

例えば:

local a = "Lua"
local u = "Луа"
print(a:len(), u:len())

出力:

3   6

utf-8文字列で文字数を出力するにはどうすればよいですか?

4

4 に答える 4

6

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
于 2012-04-11T07:33:53.623 に答える
3

Lua 5.3ではutf8.len、UTF-8文字列の長さを取得するために使用できます。

local a = "Lua"
local u = "Луа"
print(utf8.len(a), utf8.len(u))

出力:3 3

于 2015-01-14T11:40:39.680 に答える
2

あなたはそうしない。

LuaはUnicodeに対応していません。表示されるのはバイトの文字列だけです。長さを要求すると、そのバイト文字列の長さがわかります。Luaを使用してUnicode文字列と何らかの方法で対話する場合は、それらの対話を実装するLuaモジュールを作成するか、そのようなモジュールをダウンロードする必要があります。

于 2012-04-11T00:16:08.863 に答える
0

もう1つの方法は、ネイティブのos UTF-8文字列関数をラップし、os関数を使用して手間のかかる作業を行うことです。これは、使用するOSによって異なります。これはOSXで実行しましたが、うまく機能します。Windowsも同様です。もちろん、コマンドラインからスクリプトを実行したいだけの場合は、別のワームの缶が開きます。アプリによって異なります。

于 2012-04-11T04:42:57.780 に答える