データ操作

[C#] サロゲートペアを含む文字列の文字数を取得する(StringInfo.LengthInTextElements)

2021年4月29日

サロゲートペアを含む文字列の文字数を取得するには、
System.Globalization.StringInfo.LengthInTextElementsを使用します。

※文字数を取得するメソッドにはLengthがありますが、
サロゲートペアを含む文字列では正確にカウントできないので、
この方法でカウントしてください。

サンプル

例)サロゲートペアを含む文字列の文字数を取得する

using System.Globalization;

//サンプル文字列(サロゲートペア文字)
string str = "𠀋𡈽𡌛";

//文字数を取得する
int result = new StringInfo(str3).LengthInTextElements;
→ 3

//※Lengthで取得してみると正しい文字数が取得できません。
int result2 = str.Length;
→ 6

備考

  • StringInfo.LengthInTextElementsの使い方は上のサンプルを参照ください。
  • LengthInTextElementsはサロゲートペアを含まない文字でも使用できます。

関連記事

-データ操作
-