Ccmmutty logo
Commutty IT
0 pv3 min read

【C#】正規表現、文字列チェック用テストPG 半角とか全角とか

https://cdn.magicode.io/media/notebox/blob_lSsNZbv
正規表現のチェックをするときに使ったもの
.Net 5以上でshift-jisを使うときは
「System.Text.Encoding.CodePages 」
を NuGet パッケージからいれる。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
これをEncodingする前に追加する。
文字コードとか正規表現でしようするコードは各々のいいように・・・
下記より本題。
チェックするパターンは下記(使った時に使用してたもの)
①文字列が半角数値のみで構成されている
②文字列が半角文字のみで構成されている
③文字列が全角のみで構成されている
④文字列が半角スペースのみで構成されている
⑤文字列が全角スペースのみで構成されている
⑥文字列がすべて半角数値の「0」で構成されている
⑦文字列が日付書式である (ゴリ押し)
using System;
using System.Text;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {

        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string[] testStrings =
        {
            "12345",   // 半角数値
            "abcDEF",  // 半角文字
            "あいうえお", // 全角
            "     ",    // 半角スペース
            "   ",   // 全角スペース
            "00000",   // すべて0の半角数値
            "2024/02/01" // 日付
        };

        foreach (var str in testStrings)
        {
            byte[] encodedBytes = Encoding.GetEncoding("shift-jis").GetBytes(str);
            string encodedStr = Encoding.GetEncoding("shift-jis").GetString(encodedBytes);

            Console.WriteLine($"文字列: {encodedStr}");
            Console.WriteLine($"① 半角数値のみ: {Regex.IsMatch(encodedStr, "^[0-9]+$")}");
            Console.WriteLine($"② 半角文字のみ: {Regex.IsMatch(encodedStr, "^[\u0020-\u007E]+$")}");
            Console.WriteLine($"③ 全角のみ: {Regex.IsMatch(encodedStr, "^[^\x00-\x7F]+$")}");
            Console.WriteLine($"④ 半角スペースのみ: {Regex.IsMatch(encodedStr, "^ +$")}");
            Console.WriteLine($"⑤ 全角スペースのみ: {Regex.IsMatch(encodedStr, "^[ ]+$")}");
            Console.WriteLine($"⑥ すべて0の半角数値: {Regex.IsMatch(encodedStr, "^0+$")}");
            Console.WriteLine($"⑦ 日付書式 (YYYY/MM/DD): {Regex.IsMatch(encodedStr, "^\\d{4}/\\d{2}/\\d{2}$")}");
            Console.WriteLine("--------------------------------------------------");
        }
    }
}
実行結果

Discussion

コメントにはログインが必要です。