Lua:
文字列の長さを求める
How to: (方法)
local myString = "こんにちは"
local length = #myString
print(length) -- Lua 5.3以降ではこの出力は9
サンプル出力:
9
-- 別の方法
local myString = "こんにちは"
local length = string.len(myString)
print(length) -- 出力は9
サンプル出力:
9
Deep Dive (深堀り)
Luaでは、文字列の長さはシャープ(#
)記号で簡単に求めることができます。古いバージョンではstring.len
関数もよく使われていましたが、今では#
の方が一般的です。
文字列の長さを測るための実装は、Luaのバージョンにより異なることがあります。特に、Lua 5.3以降では、UTF-8エンコーディングされた文字列が正しく扱われるようになりました。この変更により、多言語サポートが改善されています。
ですが、注意が必要です。#
はバイト単位での長さを返すため、マルチバイト文字を含む文字列では意図しない結果となることがあります。例えば、上記の例では"こんにちは"は5文字ですが、UTF-8では日本語の文字が3バイトでエンコードされるため、9という長さが返されます。
代わりに、特定の文字エンコーディングで文字列の長さを正確に知りたい場合はライブラリを使う方法もあります。例えば、Luaのutf8.len
関数はUTF-8エンコードされた文字列の実際の文字数を返しますが、これはLua 5.3で導入された標準ライブラリです。