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

C#のChar.IsHighSurrogate(String, Int32)メソッドの使い方を解説

C#のChar.IsHighSurrogate()メソッドは、文字列内の指定された位置にあるCharオブジェクトが上位サロゲートであるかどうかを判定するためのメソッドです。

サロゲートペアは、UTF-16エンコーディングにおいてBMP(基本多言語面)外の文字を表現するために使用される仕組みで、上位サロゲートと下位サロゲートの2つのコード単位で構成されます。このメソッドを使うことで、特定の位置の文字が上位サロゲートに該当するかどうかを簡単に確認できます。

構文

このメソッドの構文は以下の通りです。

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

パラメータの意味は次の通りです。

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

指定位置の文字が上位サロゲートであればtrueを返し、そうでなければfalseを返します。

例1:上位サロゲートが含まれる場合

まず、Char.IsHighSurrogate()メソッドを実装した例を見てみましょう。

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

出力結果

上記のコードを実行すると、以下の出力が得られます。

Contains High Surrogate value!

この例では、インデックス4の位置にある「\uD800」が上位サロゲートであるため、trueが返されています。

例2:上位サロゲートが含まれない場合

続いて、別の例を見てみましょう。

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

出力結果

上記のコードを実行すると、以下の出力が得られます。

Does not contain High Surrogate value!

この例では、インデックス2の位置にある文字は「g」であり、上位サロゲートではないため、falseが返されています。

まとめ

Char.IsHighSurrogate(String, Int32)メソッドを使用すると、文字列内の任意の位置にある文字が上位サロゲートかどうかを簡単に判定できます。Unicodeの補助文字を扱う際や、文字列を正しく処理したい場合に役立つメソッドですので、ぜひ活用してみてください。

  1. C#のChar.ToUpperInvariant(Char)メソッドとは?構文とサンプルコードを解説

    C# の Char.ToUpperInvariant() メソッドは、インバリアントカルチャ(カルチャに依存しない固定の規則)の大文字・小文字の規則に基づいて、Unicode 文字の値を対応する大文字に変換するためのメソッドです。 このメソッドは静的(static)メソッドであり、実行環境のカルチャ設定に影響されない点が大きな特徴です。そのため、どの地域や言語設定の環境で実行しても常に同じ結果が得られます。トルコ語のように大文字化の挙動がカルチャによって変わる文字(例:i → I / İ)を扱う場合でも、安定した動作が求められる場面で特に有用です。 構文 public static char

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

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