C#にてGUIアプリケーションを作成するときに使用する
TextBox など入力文字の制限をする場合に使用する。特定文の文字列(整数・実数・全角かな・TELなど)かを判断する方法例を説明します。
特定の文字列に含まれる文字の判断
単純な文字列は、foreach等で文字列中の文字を1文字づつ取り出し、特定の文字か比較して判断出来ます。(プログラムの基本的な方法です。)
(IsHalfNumeric等は特定の文字か判断を参照してください。)
//半角数字の文字列か判断する static public bool IsHalfNumericStr(string s) { bool rc = true; foreach (char c in s) { if (!IsHalfNumeric(c)) { rc = false; break; } } return (rc); } //半角整数値の文字列か判断する static public bool IsHalfDigitStr(string s) { bool rc = true; foreach (char c in s) { if (!IsHalfDigit(c)) { rc = false; break; } } return (rc); } //半角実数値の文字列か判断する static public bool IsHalfRealStr(string s) { } //半角16進数の文字列か判断する static public bool IsHalfHexStr(string s) { } //半角英文字の文字列か判断する static public bool IsHalfAlphaStr(string s) { } //半角英数字の文字列か判断する static public bool IsHalfAlnumStr(string s) { } //半角カナ文字の文字列か判断する static public bool IsHalfKanaStr(string s) { } //半角表示文字の文字列か判断する static public bool IsHalfDisplayStr(string s) { }
※実数判断を厳密にするには、以下のような正規表現にて行ってください。
正規表現での特定文字列の判断
単純な文字列とは違い、日付・電話番号・郵便番号などは単純な比較では出来ませんので、正規表現にて判断します。以下に判断方法の例を記載します。
特定文字列か判断する関数 _IsMatchString() 関数を作成します。(この関数は単に汎用性を持たせるためです)
作成した正規表現と判断する文字列を _IsMatchString() に渡すだけです。
static private Regex _HalfDate = new Regex(@"\A([0-9]{2,4})/([0-9]{2})/([0-9]{2})\z"); //半角日付文字 static private Regex _HalfPhone = new Regex(@"\A\d{1,4}-\d{1,4}-\d{1,4}\z"); //半角電話番号 static private Regex _HalfPost = new Regex(@"\A\d{1,3}-\d{1,4}\z"); //半角郵便番号 static private Regex _DblKatakana = new Regex("^[ァ-ヴ!ー]+$"); //全角カナ文字 static private Regex _DblHiragana = new Regex("^[ぁ-ん!ー]+$"); //全角かな文字 /// <summary> /// 特定文字列か判断する /// </summary> /// <param name="regex"></param> /// <param name="s"></param> /// <returns></returns> static private bool _IsMatchString(Regex regex, string s) { if (!regex.IsMatch(s)) { return false; } return true; } // 半角日付文字列か判断する static public bool IsHalfDateStr(string s) { return _IsMatchString(_HalfDate, s); } // 半角日付文字列か判断する static public bool IsHalfTimeStr(string s) { return _IsMatchString(_HalfTime, s); } // 半角電話番号文字列か判断する static public bool IsHalfPhoneStr(string s) { return _IsMatchString(_HalfPhone, s); } // 半角郵便番号文字列か判断する static public bool IsHalfPostStr(string s) { return _IsMatchString(_HalfPost, s); } // 全角カタカナ文字列か判断する static public bool IsDblKatakanaStr(string s) { return _IsMatchString(_DblKatakana, s); } // 全角ひらがな文字列か判断する static public bool IsDblHiraganaStr(string s) { return _IsMatchString(_DblHiragana, s); }
文字列判断を全て正規表現にて行うこともできます。速度などの問題を考慮して、どちらを使うかご自分で判断してください。