MENU

C# 文字列が半角英数字のみであるかを判定する

C#プログラミングにおいて、ユーザー入力やデータの検証は非常に重要な作業です。特に、文字列が半角英数字のみで構成されているかを確認する必要がある場面は多々あります。例えば、ユーザーIDやパスワードの設定、製品コードの入力などがそれに当たります。この記事では、C#を使って文字列が半角英数字のみであるかを判定する方法を、初心者にも分かりやすく解説します。

目次

正規表現を使用する方法

文字列が半角英数字のみで構成されているかを判定する最も効率的な方法の一つは、正規表現を使用することです。以下に、その実装方法を示します。

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        Console.WriteLine(IsAlphanumeric("Hello123")); // 出力: True
        Console.WriteLine(IsAlphanumeric("Hello 123")); // 出力: False
        Console.WriteLine(IsAlphanumeric("Hello123!")); // 出力: False
        Console.WriteLine(IsAlphanumeric("こんにちは123")); // 出力: False
    }

    static bool IsAlphanumeric(string input)
    {
        // 文字列が空の場合はfalseを返す
        if (string.IsNullOrEmpty(input))
            return false;

        // 正規表現パターン: ^[a-zA-Z0-9]+$
        // ^: 文字列の先頭
        // [a-zA-Z0-9]: 英小文字、英大文字、数字のいずれか
        // +: 直前の文字(セット)が1回以上繰り返す
        // $: 文字列の末尾
        return Regex.IsMatch(input, @"^[a-zA-Z0-9]+$");
    }
}

このコードの主なポイントは以下の通りです:

  1. System.Text.RegularExpressions名前空間を使用して、正規表現機能を利用します。
  2. IsAlphanumericメソッドを定義し、文字列を引数として受け取ります。
  3. 入力が空文字列またはnullの場合は、falseを返します。
  4. Regex.IsMatchメソッドを使用して、文字列が正規表現パターンに一致するかをチェックします。
  5. 正規表現パターン^[a-zA-Z0-9]+$は、文字列全体が半角英数字のみで構成されていることを表します。

文字ごとにチェックする方法

正規表現を使用せずに、文字列の各文字を個別にチェックする方法もあります。この方法は、正規表現ほど効率的ではありませんが、より直感的に理解しやすい場合があります。

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        Console.WriteLine(IsAlphanumeric("Hello123")); // 出力: True
        Console.WriteLine(IsAlphanumeric("Hello 123")); // 出力: False
        Console.WriteLine(IsAlphanumeric("Hello123!")); // 出力: False
        Console.WriteLine(IsAlphanumeric("こんにちは123")); // 出力: False
    }

    static bool IsAlphanumeric(string input)
    {
        // 文字列が空の場合はfalseを返す
        if (string.IsNullOrEmpty(input))
            return false;

        // 文字列の各文字が英数字であるかをチェック
        return input.All(c => char.IsLetterOrDigit(c));
    }
}

このコードの主なポイントは以下の通りです:

  1. string.IsNullOrEmptyメソッドを使用して、入力が空またはnullでないかをチェックします。
  2. string.Allメソッドとchar.IsLetterOrDigitメソッドを組み合わせて、各文字が英字または数字であるかを判定します。

まとめ

C#で文字列が半角英数字のみであるかを判定する方法として、正規表現を使用する方法と文字ごとにチェックする方法を紹介しました。それぞれの方法には以下のような特徴があります:

  1. 正規表現を使用する方法:
    • 効率的で柔軟性が高い
    • 複雑な文字列パターンにも対応可能
    • 正規表現の知識が必要
  2. 文字ごとにチェックする方法:
    • 直感的で理解しやすい
    • 正規表現の知識が不要
    • 大規模なデータセットでは効率が劣る可能性がある

どちらの方法を選択するかは、プロジェクトの要件や個人の好みによって異なります。これらの技術を適切に使用することで、より堅牢で信頼性の高いアプリケーションを開発することができるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次