C#のUri.IsHexDigit()メソッドとは?使い方をサンプルコード付きで解説
Uri.IsHexDigit()メソッドとは
C#のUri.IsHexDigit()メソッドは、指定された文字が有効な16進数の数字(0〜9、A〜F、a〜f)であるかどうかを判定します。文字が16進数として有効であればtrue、そうでなければfalseを返します。
構文
以下が構文です。
public static bool IsHexDigit (char ch);
パラメータchには、検証対象となる文字を指定します。
使用例1:有効な16進数の文字を判定する
まずは、文字「e」が有効な16進数の数字かどうかを判定する例を見てみましょう。
using System;
public class Demo {
public static void Main(){
char ch = 'e';
Console.WriteLine("Character value = "+ch);
int res = Uri.FromHex(ch);
Console.WriteLine("Converted int value = "+res);
if(Uri.IsHexDigit(ch)) {
Console.WriteLine("Valid hexadecimal digit");
} else {
Console.WriteLine("Invalid hexadecimal digit");
}
}
}出力結果
このプログラムを実行すると、次の出力が得られます。
Character value = e Converted int value = 14 Valid hexadecimal digit
この例では、まずUri.FromHex()メソッドを使って文字「e」を対応する整数値14に変換しています。その後、Uri.IsHexDigit()によって「e」が有効な16進数の数字であることが確認できました。
使用例2:無効な文字を判定する
次に、16進数として無効な文字「#」を判定する例を見てみましょう。
using System;
public class Demo {
public static void Main(){
char ch = '#';
Console.WriteLine("Character value = "+ch);
if(Uri.IsHexDigit(ch)) {
Console.WriteLine("Valid hexadecimal digit");
} else {
Console.WriteLine("Invalid hexadecimal digit");
}
}
}出力結果
このプログラムを実行すると、次の出力が得られます。
Character value = # Invalid hexadecimal digit
「#」は16進数の数字ではないため、「Invalid hexadecimal digit(無効な16進数の数字)」と表示されます。
まとめ
Uri.IsHexDigit()メソッドは、URLエンコードやパーセントエンコーディングの処理などで、文字が16進数表現として妥当かどうかを手軽にチェックできる便利なメソッドです。判定対象となる有効な文字は「0〜9」「A〜F」「a〜f」の合計22種類です。URLの解析や文字列のバリデーションを行う際に活用してみてください。
-
C#のTakeWhileメソッドの使い方をわかりやすく解説
C#のLINQに用意されているTakeWhile()メソッドを使うと、Predicate(述語)で指定した条件が成立している間、シーケンスの先頭から要素を取得することができます。 このメソッドは、条件を満たす限り先頭から順に要素を取り出し、最初に条件を満たさなくなった要素に到達した時点で処理を停止するという特徴があります。そのため、配列の途中に条件外の要素があると、それ以降の要素はたとえ条件を満たしていても取得されない点に注意が必要です。 TakeWhile()メソッドの基本的な使い方 まず、整数型の配列を宣言して初期化します。 int[] arr = { 25, 40, 65, 70 };
-
C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説
GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と