Elixir で漢字を判定する方法
Elixir で漢字を判定する方法。Unicode における漢字のコードポイントは以下の記事にまとまっている。
これをもとに判定モジュールを書いてみた。
文字列を 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() "吾輩猫名前無生見当何薄暗所泣事記憶"
ちゃんと判定できていそう。