C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のChar.IsSurrogate(String, Int32)メソッドとは?構文と使い方を実例付きで解説

C#のChar.IsSurrogate()メソッドは、指定した位置にある文字がサロゲートコード単位(サロゲートペアを構成する文字)であるかどうかを判定し、結果をbool値として返すメソッドです。文字列中にUnicodeの拡張領域文字などが含まれているかを確認したい場合に役立ちます。

構文

Char.IsSurrogate()メソッドの構文は以下の通りです。

public static bool IsSurrogate (string str, int index);

各パラメータの意味は次のようになっています。

  • str:判定対象となる文字列
  • index:str内で評価する文字の位置(インデックス)

指定されたインデックスの文字が上位サロゲート(U+D800〜U+DBFF)または下位サロゲート(U+DC00〜U+DFFF)に該当する場合はtrueを返し、それ以外の場合はfalseを返します。

使用例1:サロゲート値が含まれる場合

まず、Char.IsSurrogate()メソッドを使った基本的な例を見てみましょう。文字配列の中に「\uD800」というサロゲート文字を含めています。

using System;
public class Demo {
    public static void Main(){
        string str = new String(new char[] { 'k', 'm', 'g', 't', '\uD800' });
        bool res = Char.IsSurrogate(str, 4);
        if (res)
            Console.WriteLine("Contains Surrogate value!");
        else
            Console.WriteLine("Does not contain Surrogate value!");
    }
}

この例では、インデックス4(5番目)の文字が「\uD800」であり、これは上位サロゲート領域に属するため、trueが返されます。

出力結果

Contains Surrogate value!

使用例2:サロゲート値が含まれない場合

続いて、サロゲート文字が含まれていない場合の例を見てみましょう。今度はすべて通常の英字で構成された文字列を使用します。

using System;
public class Demo {
    public static void Main(){
        string str = new String(new char[] { 'k', 'm', 'g', 't', 'w' });
        bool res = Char.IsSurrogate(str, 4);
        if (res)
            Console.WriteLine("Contains Surrogate value!");
        else
            Console.WriteLine("Does not contain Surrogate value!");
    }
}

この場合、インデックス4の文字は通常のアルファベット「w」なので、サロゲートコード単位ではないと判定され、falseが返されます。

出力結果

Does not contain Surrogate value!

まとめ

Char.IsSurrogate(String, Int32)メソッドを使うことで、文字列内の任意の位置にある文字がサロゲートコード単位かどうかを簡単に判定できます。絵文字やCJK拡張漢字など、UTF-16で2つのコード単位を使って表現される文字を扱う際には、Char.IsSurrogatePairメソッドと併用することで、より正確な文字処理が可能になります。

  1. 【C#入門】Char.IsControl(String, Int32)メソッドの使い方を解説

    C#のChar.IsControl(String, Int32)メソッドは、指定した文字列の中から指定された位置にある文字が「制御文字」に分類されるかどうかを判定するためのメソッドです。制御文字とは、画面上には表示されず、改行やタブなどの特殊な動作を表す文字のことを指します。構文public static bool IsControl (string str, int index);各パラメータの意味は以下の通りです。str: 判定対象となる文字列index: str 内で評価する文字の位置(インデックス)戻り値はbool型で、指定位置の文字が制御文字であれば true、そうでなければ fal

  2. C#でInt32を文字列として表現する方法

    Int32は、32ビットの符号付き整数を表す型です。この値を文字列として扱いたい場合は、ToString()メソッドを使用します。ToString()メソッドは、数値をそのまま文字列形式に変換してくれるため、コンソール出力や文字列の連結などで非常に便利です。基本的な使い方まず、Int32型の変数を宣言し、値を初期化します。int val = 1023;次に、ToString()メソッドを呼び出して、変数の値を文字列として取得します。val.ToString()サンプルコード以下は、Int32の値を文字列に変換して表示する完全な例です。using System; class Demo { &nb