グループ情報を含むすべての文字をリストする CSV 形式のファイルである公開されたUnicodeData.txtで、ユニコード文字の完全なリストにアクセスできます。
クラスごとのグループ化
3 番目の列は、ここで指定された 2 桁のショートフォーム、ロングフォームで、文字クラスを指定します。
letter-character
-- クラス Lu、Ll、Lt、Lm、Lo、または Nl
combining-character
-- クラス Mn または Mc
decimal-digit-character
-- クラス Nd
connecting-character
-- クラス PC
formatting-character
-- クラス Cf
C# LINQ を使用して、特定のグループの文字を反復処理することもできます。
var charInfo = Enumerable.Range(0, 0x110000)
.Where(x => x < 0x00d800 || x > 0x00dfff)
.Select(char.ConvertFromUtf32)
.GroupBy(s => char.GetUnicodeCategory(s, 0))
.ToDictionary(g => g.Key);
foreach (var ch in charInfo[UnicodeCategory.LowercaseLetter])
{
Console.Write(ch);
}
言語によるグループ化
ただし、言語のグループ化については明示的に言及されていないため、名前の最初の単語を解析して、各文字を言語別にグループ化する必要があります。すべてのラテン Unicode 文字はプレフィックス"Latin"で始まるため、これが最も信頼できる方法です。例は次のとおりです。
- ラテン語:ラテン大文字 A
- Latin Extended A:急性ラテン小文字 C
- ラテン語拡張 B:ラテン語の大文字のトーン 6
- ラテン拡張追加:ラテン大文字 B 上にドット