オフトゥン大好き。

惰眠系プログラマの作業ログで( ˘ω˘ ) スヤァ…

Elixir で漢字を判定する方法

Elixir で漢字を判定する方法。Unicode における漢字のコードポイントは以下の記事にまとまっている。

tama-san.com

これをもとに判定モジュールを書いてみた。

Elixir 漢字判定モジュール

文字列を charlist に変換して Enum.filter で漢字だけ抜き出してみると以下のようになる。

❯ iex -S mix
Erlang/OTP 24 [erts-12.3.2.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit]

Interactive Elixir (1.13.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> text = """
...(1)> 吾輩は猫である。名前はまだ無い。
...(1)>  どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
...(1)> """
"吾輩は猫である。名前はまだ無い。\n どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。\n"

iex(2)> text |> String.to_charlist() |> Enum.filter(&Kanji.kanji?/1)
[21566, 36649, 29483, 21517, 21069, 28961, 29983, 35211, 24403, 20309, 34180,
 26263, 25152, 27875, 20107, 35352, 25014]

iex(3)> text |> String.to_charlist() |> Enum.filter(&Kanji.kanji?/1) |> String.Chars.to_string()
"吾輩猫名前無生見当何薄暗所泣事記憶"

ちゃんと判定できていそう。