LoginSignup
13
11

More than 5 years have passed since last update.

標準ライブラリの utf8 を使う

Last updated at Posted at 2015-01-17

Lua 5.3 で utf8 が標準ライブラリとして導入されたので、練習。

まずはコードポイントから文字列を生成してみよう。次のコードは「あいうえお」を表示する。

print(utf8.char(0x3042, 0x3044, 0x3046, 0x3048, 0x304A))

逆に文字列からコードポイントを求めてみよう

print(string.format("U+%X", utf8.codepoint("あ")))

文字数を求めてみよう。

str = "あいうえお"
print(utf8.len(str))

for ループで1文字ずつコードポイントと先行バイトの位置を求めてみよう。

str = "あいうえお"

for p, c in utf8.codes(str) do
    print(string.format("%d U+%X", p, c))
end

1文字ずつターミナルに表示しては改行してみよう。コードポイントを文字に変換すればよい。

str = "あいうえお"

for p, c in utf8.codes(str) do
    print(string.format("%s", utf8.char(c)))
end

先行バイトの位置を求めて、スライスすることで、1文字ずつ表示させることもできる。

str = "あいうえお"
length = utf8.len(str)

for i = 1, length do
  lead = utf8.offset(str, i)
  trail = utf8.offset(str, i+1) - 1
  print(string.sub(str, lead, trail))
end
13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11