/// <summary>指定された文字列が、英字(半角)のみで構成されているかどうか確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:英字(半角)のみで構成されている。 /// false:英字(半角)のみで構成されていない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsAlphabet_Hankaku(string input) { // 先頭から末尾まで、A-Z、a-zが0回以上連続マッチ // 文字コード表利用(文字クラス無し) return(StringChecker.Match(input, "^[A-Za-z]*$")); }
/// <summary> /// 指定された文字列が郵便 番号 /// (日本, ハイフン有り)形式であるか。 /// </summary> /// <param name="input">入力文字列</param> /// <returns> /// true:郵便 番号(日本, ハイフン有り)形式である。 /// false:郵便 番号(日本, ハイフン有り)形式でない。 /// </returns> public static bool IsJpZipCode7_Hyphen(string input) { // 先頭xxx-xxxx末尾(xは10進数) // return StringChecker.Match(input, "^[0-9]{3}[-][0-9]{4}$"); return(StringChecker.Match(input, @"^\d{3}[-]\d{4}$")); }
/// <summary>指定された文字列が、数字(全角)のみで構成されているかどうか確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:数字(全角)のみで構成されている。 /// false:数字(全角)のみで構成されていない。 /// </returns> /// <remarks> /// 数値チェックという意味ではParse、TryParse /// メソッドを使用すべきかどうかも検討下さい。 /// 空文字列が指定された場合は、trueが返ります。 /// </remarks> public static bool IsNumbers_Zenkaku(string input) { // 先頭から末尾まで、0-9が0回以上連続マッチ // 文字コード表利用(文字クラス無し) return(StringChecker.Match(input, "^[0-9]*$")); }
/// <summary> /// 指定された文字列が郵便 番号 /// (日本, ハイフン無し)形式であるか。 /// </summary> /// <param name="input">入力文字列</param> /// <returns> /// true:郵便 番号(日本, ハイフン無し)形式である。 /// false:郵便 番号(日本, ハイフン無し)形式でない。 /// </returns> public static bool IsJpZipCode7_NoHyphen(string input) { // 先頭xxxxxxx末尾(xは10進数) // return StringChecker.Match(input, "^[0-9]{7}$"); return(StringChecker.Match(input, "^\\d{7}$")); }
/// <summary>指定された文字列が、全角文字のみで構成されているかどうか確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:全角文字のみで構成されている。 /// false:全角文字のみで構成されていない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsZenkaku(string input) { // 先頭から末尾まで、「[ ]-~、。-゚」(を除く)が0回以上連続マッチ // 文字コード表利用(文字クラス無し) return(StringChecker.Match(input, "^[^ -~。-゚]*$")); }
/// <summary>指定された文字列が片仮名(半角)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:片仮名(半角)である。 /// false:片仮名(半角)でない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsKatakana_Hankaku(string input) { // 先頭から末尾まで、ヲ-゚が0回以上連続マッチ // 文字コード表利用 return(StringChecker.Match(input, "^[ヲ-゚]*$")); }
/// <summary>指定された文字列が漢字であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:漢字である。 /// false:漢字でない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsKanji(string input) { // 先頭から末尾まで、漢字文字が0回以上連続マッチ // 漢字文字クラス利用 return(StringChecker.Match(input, "^\\p{IsCJKUnifiedIdeographs}*$")); }
/// <summary> /// 指定された文字列が、SJIS半角 /// (にエンコーディング可能な)文字 /// のみで構成されているかどうか確認する。 /// </summary> /// <param name="input">入力文字列</param> /// <returns> /// true:SJIS半角文字のみで構成されている。 /// false:SJIS半角文字のみで構成されていない。 /// </returns> /// <remarks> /// SJISエンコーディングを使用して判定する。 /// .NET TIPS > 文字列の全角/半角をチェックするには? /// http://www.atmarkit.co.jp/fdotnet/dotnettips/014strcheck/strcheck.html /// 空文字列が指定された場合は、trueが返ります。 /// </remarks> public static bool IsShift_Jis_Hankaku(string input) { // SJIS文字チェック if (StringChecker.IsShift_Jis(input)) { // SJIS文字である。 // バイト数を取得 Encoding sjisEnc = Encoding.GetEncoding(CustomEncode.shift_jis); int byteLen = sjisEnc.GetByteCount(input); if (byteLen == input.Length) { // バイト数 = 文字数の場合はSJIS半角 return(true); } else { // バイト数 ≠ 文字数の場合はSJIS全角が混じる return(false); } } else { // SJIS文字でない。 return(false); } }
/// <summary>指定された文字列が、数字(半角)のみで構成されているかどうか確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:数字(半角)のみで構成されている。 /// false:数字(半角)のみで構成されていない。 /// </returns> /// <remarks> /// 数値チェックという意味ではParse、TryParse /// メソッドを使用すべきかどうかも検討下さい。 /// 空文字列が指定された場合は、trueが返ります。 /// </remarks> public static bool IsNumbers_Hankaku(string input) { // 先頭から末尾まで、0-9が0回以上連続マッチ // 文字コード表利用 return(StringChecker.Match(input, "^[0-9]*$")); }
/// <summary>指定された文字列が、英字(全角)のみで構成されているかどうか確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:英字(全角)のみで構成されている。 /// false:英字(全角)のみで構成されていない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsAlphabet_Zenkaku(string input) { // 先頭から末尾まで、A-Z、a-zが0回以上連続マッチ // 文字コード表利用(文字クラス無し) return(StringChecker.Match(input, "^[A-Za-z]*$")); }
/// <summary> /// 指定された文字列が郵便 区 番号 /// (日本, ハイフン有り)形式であるか。 /// </summary> /// <param name="input">入力文字列</param> /// <returns> /// true:郵便 区 番号(日本, ハイフン有り)形式である。 /// false:郵便 区 番号(日本, ハイフン有り)形式でない。 /// </returns> public static bool IsJpZipCode5_Hyphen(string input) { // 先頭xxx末尾(xは10進数) // 先頭xxx-xx末尾(xは10進数) return(StringChecker.Match(input, @"^\d{3}$") | StringChecker.Match(input, @"^\d{3}[-]\d{2}$")); }
/// <summary> /// 指定された文字列が郵便 区 番号 /// (日本, ハイフン無し)形式であるか。 /// </summary> /// <param name="input">入力文字列</param> /// <returns> /// true:郵便 区 番号(日本, ハイフン無し)形式である。 /// false:郵便 区 番号(日本, ハイフン無し)形式でない。 /// </returns> public static bool IsJpZipCode5_NoHyphen(string input) { // 先頭xxx末尾(xは10進数) // 先頭xxxxx末尾(xは10進数) return(StringChecker.Match(input, "^\\d{3}$") | StringChecker.Match(input, "^\\d{5}$")); }
/// <summary>指定された文字列が、数字のみで構成されているかどうか確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:数字のみで構成されている。 /// false:数字のみで構成されていない。 /// </returns> /// <remarks> /// 数値チェックという意味ではParse、TryParse /// メソッドを使用すべきかどうかも検討下さい。 /// 空文字列が指定された場合は、trueが返ります。 /// </remarks> public static bool IsNumbers(string input) { // 先頭から末尾まで、0-9, 0-9が0回以上連続マッチ //// 文字コード表利用 //return StringChecker.Match(input, "^[0-90-9]*$"); // 数値文字クラス利用 return(StringChecker.Match(input, "^\\d*$")); }
/// <summary>指定された文字列が片仮名(全角)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:片仮名(全角)である。 /// false:片仮名(全角)でない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsKatakana_Zenkaku(string input) { // 先頭から末尾まで、ァ-ヾが0回以上連続マッチ //// 文字コード表利用 //return StringChecker.Match(input, "^[ァ-ヾ]*$"); // 日本語文字クラス利用 return(StringChecker.Match(input, "^\\p{IsKatakana}*$")); }
/// <summary>指定された文字列が平仮名であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:平仮名である。 /// false:平仮名でない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsHiragana(string input) { // 先頭から末尾まで、ぁ-ゞが0回以上連続マッチ //// 文字コード表利用 //return StringChecker.Match(input, "^[ぁ-ゞ]*$"); // 日本語文字クラス利用 return(StringChecker.Match(input, "^\\p{IsHiragana}*$")); }
/// <summary>指定された文字列が固定電話番号(日本, ハイフン有り)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:固定電話番号(日本, ハイフン有り)である。 /// false:固定電話番号(日本, ハイフン有り)でない。 /// </returns> /// <remarks> /// <総務省> /// 電話番号に関するQ&A /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a-2001aug.html /// 電気通信番号指定状況-固定電話の電話番号 /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/fixed.html /// ※ FMC(Fixed Mobile Convergence)は含まず。 /// </remarks> public static bool IsJpFixedLinePhoneNumber_Hyphen(string input) { // 先頭0x(1~4個)-x(1~4個)-x(4個)末尾(xは10進数) // そして、全体が10桁(ハイフン入れて12文字)であること。 if (input.Length == 12) { return(StringChecker.Match(input, "^0\\d{1,4}-\\d{1,4}-\\d{4}$")); } return(false); }
/// <summary>数字(double)に変換可能か確認する。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:数字に変換可能。 /// false:数字に変換不可能。 /// </returns> /// <remarks> /// double.TryParseでの実装。 /// http://support.microsoft.com/kb/329488/ja /// 全角文字もチェック可能(半角変換後にチェック)。 /// </remarks> public static bool IsNumeric(string input) { double temp; // 全角文字が混じる場合は半角化する。 if (!StringChecker.IsHankaku(input)) { input = StringConverter.ToHankaku(input); } return(double.TryParse(input, out temp)); }
/// <summary>MやDが1桁の場合に、YYYYMMDDに変換</summary> /// <param name="text"> /// YYYYMMDDに変換する、 /// ・YYYYMMD /// ・YYYYMDD /// ・YYYYMD /// などの文字列。 /// </param> /// <returns> /// true:変換した場合。 /// false:変換しなかった場合。 /// </returns> public static bool EditYYYYMMDDString(ref string text) { // (1) 入力文字数が 7 桁の場合、 // 5 文字目 ~ 6 文字目をチェックし、 // ・13 以上ならば、 // ・0 を 5 文字目の前に付加し月とする。 // ・6 文字目~ 7 文字目を日とする。 // ・13 未満ならば、 // ・5 文字目 ~ 6文字目を月とする。 // ・0 を 7 文字目の前に付加し日とする。 // (2) 入力文字数が 6 桁の場合、 // ・0 を 5 文字目の前に付加し月とする。 // ・0 を 6 文字目の前に付加し日とする。 if (StringChecker.IsNumbers_Hankaku(text)) { if (text.Length == 7) { // (1) 入力文字数が 7 桁の場合、 int temp = 0; if (int.TryParse(text.Substring(4, 2), out temp)) { if (temp >= 13) { text = text.Substring(0, 4) + "0" + text.Substring(4, 1) + text.Substring(5, 2); // 変更された。 return(true); } else { text = text.Substring(0, 4) + text.Substring(4, 2) + "0" + text.Substring(6, 1); // 変更された。 return(true); } } } else if (text.Length == 6) { // (2) 入力文字数が 6 桁の場合 text = text.Substring(0, 4) + "0" + text.Substring(4, 1) + "0" + text.Substring(5, 1); // 変更された。 return(true); } } // 何もしない。 return(false); }
/// <summary> /// RegexクラスとMatchCollectionクラスを使用して、 /// 正規表現のパターン マッチングを実行する。 /// </summary> /// <param name="input">入力文字列</param> /// <param name="pattern">正規表現パターン</param> /// <returns> /// 一致のコレクション /// </returns> public static MatchCollection Matches(string input, string pattern) { return(StringChecker.Matches(input, pattern, RegexOptions.None)); }
/// <summary> /// RegexクラスとMatchクラスを使用して、 /// 正規表現のパターン マッチングを実行する。 /// </summary> /// <param name="input">入力文字列</param> /// <param name="pattern">正規表現パターン</param> /// <returns> /// true:一致した。 /// false:一致しなかった。 /// </returns> public static bool Match(string input, string pattern) { return(StringChecker.Match(input, pattern, RegexOptions.None)); }
/// <summary>指定された文字列が固定電話番号(日本, ハイフン無し)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:固定電話番号(日本, ハイフン無し)である。 /// false:固定電話番号(日本, ハイフン無し)でない。 /// </returns> /// <remarks> /// <総務省> /// 電話番号に関するQ&A /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a-2001aug.html /// 電気通信番号指定状況-固定電話の電話番号 /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/fixed.html /// ※ FMC(Fixed Mobile Convergence)は含まず。 /// </remarks> public static bool IsJpFixedLinePhoneNumber_NoHyphen(string input) { // 先頭0x(1~4個)x(1~4個)x(4個)末尾(xは10進数) // そして、全体が10桁(ハイフンが無いので10文字)であること。 return(StringChecker.Match(input, "^0\\d{9}$")); }
/// <summary>指定された文字列が携帯電話番号(日本, ハイフン有り)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:携帯電話番号(日本, ハイフン有り)である。 /// false:携帯電話番号(日本, ハイフン有り)でない。 /// </returns> /// <remarks> /// <総務省> /// 電話番号に関するQ&A /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a-2001aug.html /// 電気通信番号指定状況 /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html /// 電気通信サービスFAQ(よくある質問)-6.電話番号について /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/d_faq/6Telephonenumber.htm /// ※ 020はポケベル、060はFMC、070はPHS、080・090は携帯、11桁。 /// </remarks> public static bool IsJpCellularPhoneNumber_Hyphen(string input) { // 先頭0n0-x(4個)-x(4個)末尾(nは2 or 6 or 7 or 8 or 9、xは10進数) // そして、全体が11桁(ハイフン入れて13文字)であること。 return(StringChecker.Match(input, "^0[26789]0-\\d{4}-\\d{4}$")); }
/// <summary>指定された文字列が片仮名であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:片仮名である。 /// false:片仮名でない。 /// </returns> /// <remarks>空文字列が指定された場合は、trueが返ります。</remarks> public static bool IsKatakana(string input) { return(StringChecker.IsKatakana_Hankaku(input) || StringChecker.IsKatakana_Zenkaku(input)); }
/// <summary>指定された文字列が携帯電話番号(日本, ハイフン無し)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:携帯電話番号(日本, ハイフン無し)である。 /// false:携帯電話番号(日本, ハイフン無し)でない。 /// </returns> /// <remarks> /// <総務省> /// 電話番号に関するQ&A /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a-2001aug.html /// 電気通信番号指定状況 /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html /// 電気通信サービスFAQ(よくある質問)-6.電話番号について /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/d_faq/6Telephonenumber.htm /// ※ 020はポケベル、060はFMC、070はPHS、080・090は携帯、11桁。 /// </remarks> public static bool IsJpCellularPhoneNumber_NoHyphen(string input) { // 先頭0n0x(8個)末尾(nは2 or 6 or 7 or 8 or 9、xは10進数) // そして、全体が11桁(ハイフンが無いので11文字)であること。 return(StringChecker.Match(input, "^0[26789]0\\d{8}$")); }
/// <summary>指定された文字列がIP電話番号(日本, ハイフン有り)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:IP電話番号(日本, ハイフン有り)である。 /// false:IP電話番号(日本, ハイフン有り)でない。 /// </returns> /// <remarks> /// <総務省> /// 電話番号に関するQ&A /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a-2001aug.html /// 電気通信番号指定状況 /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html /// 電気通信サービスFAQ(よくある質問)-6.電話番号について /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/d_faq/6Telephonenumber.htm /// ※ IP電話は050から始まる11桁。 /// </remarks> public static bool IsJpIpPhoneNumber_Hyphen(string input) { // 先頭050-x(4個)-x(4個)末尾(xは10進数) // そして、全体が11桁(ハイフン入れて13文字)であること。 return(StringChecker.Match(input, "^050-\\d{4}-\\d{4}$")); }
/// <summary>指定された文字列がIP電話番号(日本, ハイフン無し)であるか。</summary> /// <param name="input">入力文字列</param> /// <returns> /// true:IP電話番号(日本, ハイフン無し)である。 /// false:IP電話番号(日本, ハイフン無し)でない。 /// </returns> /// <remarks> /// <総務省> /// 電話番号に関するQ&A /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a-2001aug.html /// 電気通信番号指定状況 /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html /// 電気通信サービスFAQ(よくある質問)-6.電話番号について /// http://www.soumu.go.jp/main_sosiki/joho_tsusin/d_faq/6Telephonenumber.htm /// ※ IP電話は050から始まる11桁。 /// </remarks> public static bool IsJpIpPhoneNumber_NoHyphen(string input) { // 先頭050x(8個)末尾(xは10進数) // そして、全体が11桁(ハイフンが無いので11文字)であること。 return(StringChecker.Match(input, "^050\\d{8}$")); }