サロゲートペアを含む文字列で、文字を個別に取り扱いたいときの方法メモ
Char型にしてしまうと、サロゲートペアをもつ文字(32bit)では2分割されてしまい、意図した文字ではなくなってしまう。
そのため System.Globalization.StringInfo.GetTextElementEnumerator(str)
を使用する。
TextElementEnumerator charEnum = StringInfo.GetTextElementEnumerator(s);
while (charEnum.MoveNext()) {
string element = charEnum.GetTextElement();
}
参考
StringInfo.GetTextElementEnumerator メソッド (String) (System.Globalization)
Unicode のサロゲートペアとは何か - ひだまりソケットは壊れない
サロゲートペアや結合文字が含まれているか調べる: .NET Tips: C#, VB.NET
文字列から1文字取得する、文字列内の文字を列挙する: .NET Tips: C#, VB.NET