BLOGブログ

2023.02.01UE5UEUE/ C++

[UE5] ひらがなかどうかをくべつする

執筆バージョン: Unreal Engine 5.0

こんにちは!
今回は、指定した文字がひらがなかどうかを判別してみたいと思います。

いくつかのやり方がありますが、この記事では
「指定した文字の値が文字コードにおけるひらがなの範囲にあるかどうか」をプログラムで判定することにします。

Unreal Engine の文字コードの扱いを見てみる

公式ドキュメントによると
「Unreal Engine 4 (UE4) の全文字列は、FStrings や TCHAR 配列などの UTF-16 フォーマットでメモリに格納しています。」
とあります。

ということは、UTF-16(Unicode の一種) でのひらがなの値の範囲が必要ですね。
「UTF-16 ひらがな」でググると「0x3040 – 0x309f」っぽいことが分かります。
直接この値を使って比較してもいいのですが、単にこの範囲を用いるのであれば
エンジンの FUnicodeBlockRange を利用することができます。

FUnicodeBlockRange を使ってみる

それではサンプルとして、入力された文字列からひらがなだけを残して返す関数を作ってみましょう。

なお、このコードをビルドするには、(プロジェクト名).Build.cs に以下のコード追加が必要です。

EUnicodeBlockRange::Hiragana!分かりやすい!
ちなみに、EUnicodeBlockRange::Katakana もあります。分かりやすい!

さて、簡単なウィジェットを使ったテストレベルを作って確認してみましょう:

上段が入力、下段が出力です。ひらがな以外は弾かれていますね。

「仕様」に注意

ところで、Unicode における「平仮名ブロック仕様」には、「ゐ」「ゑ」「゛(濁点単体)」「ゝ(繰り返し記号)」なんてのも含まれています。


引用元: 平仮名 (Unicodeのブロック) – Wikipedia

作りたいゲームの仕様にもよりますが、入れたくない文字があれば、個別に弾くのをお忘れなく。

なお「フォントで表示できるひらがなかどうか」さえ判別できればよいのであれば
「FUnicodeBlockRange と使った判定」に「フォントに含まれる文字かの判定」を組み合わせることで実現できます。

「フォントに含まれる文字かどうかを判定する方法」については、こちらのブログ記事をぜひご参照ください!
[UE4]フォント非対応の文字を置換する方法