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

C#で指定されたUnicode文字が英字または数字かどうかを確認する方法

C#で指定されたUnicode文字が英字(letter)または10進数の数字(decimal digit)のいずれかに該当するかどうかを判定するには、Char.IsLetterOrDigit() メソッドを使用します。このメソッドは、引数として渡された1文字がUnicodeの「Letter」カテゴリ(大文字・小文字・タイトルケース文字など)または「DecimalDigitNumber」カテゴリに分類される場合に true を返し、それ以外の場合は false を返します。

サンプルコード1:数字の場合

以下は、文字 '1' が英字または数字かどうかを判定する例です。

using System;
public class Demo {
   public static void Main() {
      bool res;
      char val = '1';
      Console.WriteLine("Value = "+val);
      res = Char.IsLetterOrDigit(val);
      Console.WriteLine("Is the value a letter or digit? = "+res);
   }
}

出力結果

このコードを実行すると、次のような出力が得られます。

Value = 1
Is the value a letter or digit? = True

'1' は10進数の数字に該当するため、結果は True となっています。

サンプルコード2:記号の場合

続いて、記号 '$' の場合の動作を確認してみましょう。

using System;
public class Demo {
   public static void Main() {
      bool res;
      char val = '$';
      Console.WriteLine("Value = "+val);
      res = Char.IsLetterOrDigit(val);
      Console.WriteLine("Is the value a letter or digit? = "+res);
   }
}

出力結果

このコードを実行すると、次のような出力が得られます。

Value = $
Is the value a letter or digit? = False

'$' は英字にも数字にも分類されない記号であるため、結果は False となります。

補足:関連するメソッド

より細かい判定が必要な場合は、以下のメソッドも活用できます。

  • Char.IsLetter():文字が英字かどうかのみを判定
  • Char.IsDigit():文字が10進数の数字かどうかのみを判定
  • Char.IsLetterOrDigit(char, int):指定した文字列内の位置にある文字を判定

このように Char.IsLetterOrDigit() メソッドを使えば、入力値のバリデーションや文字列の解析などにおいて、対象の文字が英字・数字のいずれかであるかを簡単にチェックできます。

  1. C#でHashSetに指定された要素が含まれているか確認する方法

    C#のHashSet<T>に特定の要素が含まれているかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定した要素がHashSet内に存在する場合はtrue、存在しない場合はfalseを返します。Contains()メソッドの基本構文public bool Contains (T item);引数には検索対象の要素を渡します。HashSetはハッシュテーブルを基盤としているため、要素の検索はO(1)の計算量で実行でき、非常に高速です。例1:数値型のHashSetでContains()を使う以下は、int型のHashSetに対してContains()メ

  2. Pythonで文字列の平均文字が存在するかどうかを確認する方法

    英数字を含む文字列 s が与えられたとき、その文字列の「平均文字」が存在するかどうかを判定し、存在する場合はその文字を返すプログラムを作成します。ここでいう平均文字とは、文字列内の各文字のASCII値の平均を計算し、その小数点以下を切り捨てた値に対応する文字のことです。 問題の例 例えば、入力が s = pqrst の場合、出力は r になります。これは、各文字のASCII値の平均が以下のように計算されるためです。 (112 + 113 + 114 + 115 + 116) / 5 = 570 / 5 = 114 ASCII値 114 に対応する文字は r なので、答えは r となります。 解