半角英数カナのチェック

「半角英数のみ入力可能」といった仕様はよくあるので、その際に使えるチェック用メソッドをメモしておきます。

public static class StringExtension
{
    // 文字列のバイト数を取得する
    public static int ByteSize(this string value)
    {
        return Encoding.GetEncoding("Shift_JIS").GetByteCount(value);
    }

    // 文字列が半角文字のみで構成されているかチェックする
    public static bool IsHalf(this string value)
    {
        return value.Length == value.ByteSize();
    }

    // 文字列が半角数字のみで構成されているかチェックする
    public static bool IsHalfNumber(this string value)
    {
        if (!value.IsHalf())
        {
            return false;
        }
        foreach (char c in value)
        {
            if (!char.IsDigit(c))
            {
                return false;
            }
        }
        return true;
    }

    // 文字列が半角アルファベットのみで構成されているかチェックする
    public static bool IsHalfAlphabet(this string value)
    {
        if (!value.IsHalf())
        {
            return false;
        }
        foreach (char c in value)
        {
            if (!char.IsLetter(c))
            {
                return false;
            }
        }
        return true;
    }

    // 文字列が半角カタカナのみで構成されているかチェックする
    public static bool IsHalfKatakana(this string value)
    {
        // 正規表現を利用
        return System.Text.RegularExpressions.Regex.IsMatch(
            value, "^[ヲ-゚]+$");
    }
}

Silverlight では Encoding クラスが無いので使えませんけどね(ToT)