黒ちゃん>まじめな処理は.NET Frameworkのstringxに任せたいと考える根性なしPGなのでサロゲートペアや結合文字はとりあえずそのまま保持をしたいと思うんですがこういったサロゲートかどうかはコードから見るしかないんでしょうか?
UCS-2文字と拡張面でsplitみたいな関数があればなぁ。
Charクラス内にいろいろとあります。
String的にはLengthが問題で、UTF16のバイト数/2しか返しません。
なので、こんなものを作ってみました。
説明要らずですね。
public static int IsSurrogatePairLength(string value)
{
int length = 0;
foreach (char c in value)
{
if (char.IsLowSurrogate(c) == true)
{
//Low Surrogateの場合だけカウントしない
}
else
{
length++;
}
}
return length;
}