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() メソッドを使えば、入力値のバリデーションや文字列の解析などにおいて、対象の文字が英字・数字のいずれかであるかを簡単にチェックできます。
-
C#でHashSetに指定された要素が含まれているか確認する方法
C#のHashSet<T>に特定の要素が含まれているかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定した要素がHashSet内に存在する場合はtrue、存在しない場合はfalseを返します。Contains()メソッドの基本構文public bool Contains (T item);引数には検索対象の要素を渡します。HashSetはハッシュテーブルを基盤としているため、要素の検索はO(1)の計算量で実行でき、非常に高速です。例1:数値型のHashSetでContains()を使う以下は、int型のHashSetに対してContains()メ
-
Pythonで文字列の平均文字が存在するかどうかを確認する方法
英数字を含む文字列 s が与えられたとき、その文字列の「平均文字」が存在するかどうかを判定し、存在する場合はその文字を返すプログラムを作成します。ここでいう平均文字とは、文字列内の各文字のASCII値の平均を計算し、その小数点以下を切り捨てた値に対応する文字のことです。 問題の例 例えば、入力が s = pqrst の場合、出力は r になります。これは、各文字のASCII値の平均が以下のように計算されるためです。 (112 + 113 + 114 + 115 + 116) / 5 = 570 / 5 = 114 ASCII値 114 に対応する文字は r なので、答えは r となります。 解