【C#】string拡張クラス晒してみる

おはよーござます。
朝ですねー。。

Microsoft MVPに応募したった
for Visual C#
ってことでこのブログはC#に寄っていくことになるかと思われますー

それとは別件で近々大発表がありますので乞うご期待

で、早速。
私ちゃんと自分で基盤持っているので、そっから晒していきますでござます。
第一弾はstringの拡張クラス!


using System;
using System.Text.RegularExpressions;

/// <summary>
/// string拡張
/// </summary>
public static class HogeStringEx
{
    /// <summary>
    /// 文字列長が範囲内かどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <param name="minLength">最小文字列長</param>
    /// <param name="maxLength">最大文字列長</param>
    /// <returns>範囲内かどうか</returns>
    public static bool InBetweenLength(this string str, int minLength, int maxLength)
    {
        if (str == null)
            return false;

        if (minLength > maxLength)
            throw new Exception("minLengthがmaxLengthより大きいよ");

        return str.Length >= minLength
            && str.Length <= maxLength;
    }

    /// <summary>
    /// 指定した正規表現にマッチするかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <param name="pattern">正規表現</param>
    /// <returns>マッチするかどうか</returns>
    public static bool IsMatch(this string str, string pattern)
    {
        if (str == null)
            return false;

        return Regex.IsMatch(str, pattern);
    }

    /// <summary>
    /// 半角英字のみかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>半角英字のみかどうか</returns>
    public static bool IsHalfAlphabet(this string str)
    {
        return str.IsMatch(@"[a-zA-Z]+");
    }

    /// <summary>
    /// 半角数字のみかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>半角数字のみかどうか</returns>
    public static bool IsHalfNumber(this string str)
    {
        return str.IsMatch(@"[0-9]+");
    }

    /// <summary>
    /// 半角記号のみかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>半角記号のみかどうか</returns>
    public static bool IsHalfSymbol(this string str)
    {
        return str.IsMatch(@"[ -/:-@\[-\`\{-\~]+");
    }

    /// <summary>
    /// 半角英数字のみかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>半角英数字のみかどうか</returns>
    public static bool IsHalfAlphabetNumber(this string str)
    {
        return str.IsMatch(@"[a-zA-Z0-9]+");
    }

    /// <summary>
    /// 半角英数字記号のみかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>半角英数字記号のみかどうか</returns>
    public static bool IsHalfAlphabetNumberSymbol(this string str)
    {
        return str.IsMatch(@"[a-zA-Z0-9 -/:-@\[-\`\{-\~]+");
    }

    /// <summary>
    /// 郵便番号かどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>郵便番号かどうか</returns>
    public static bool IsZipCode(this string str)
    {
        return str.IsMatch(@"\d{3}-\d{4}");
    }

    /// <summary>
    /// 電話番号かどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>電話番号かどうか</returns>
    public static bool IsPhoneNumber(this string str)
    {
        return str.IsMatch(@"\d{2,4}-\d{1,4}-\d{4}");
    }

    /// <summary>
    /// メールアドレスかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>メールアドレスかどうか</returns>
    public static bool IsMailAddress(this string str)
    {
        return str.IsMatch(@"[\w!#$%&'*+/=?^_@{}\\|~-]+(\.[\w!#$%&'*+/=?^_{}\\|~-]+)*@([\w][\w-]*\.)+[\w][\w-]*");
    }

    /// <summary>
    /// URLかどうかを検証します。
    /// </summary>
    /// <param name="str">文字列</param>
    /// <returns>URLかどうか</returns>
    public static bool IsUrl(this string str)
    {
        return str.IsMatch(@"https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+");
    }

    /// <summary>
    /// 現在の System.String オブジェクトの先頭と末尾から、配列で指定された文字セットをすべて削除します。
    /// </summary>
    public static string TrimStartEnd(this string str, char[] trimChars)
    {
        str = str.TrimStart(trimChars);
        return str.TrimEnd(trimChars);
    }
}
<||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- blog -->
<ins class="adsbygoogle"
     style="display:inline-block;width:336px;height:280px"
     data-ad-client="ca-pub-2202090188729820"
     data-ad-slot="5505004995"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- blog -->
<ins class="adsbygoogle"
     style="display:inline-block;width:336px;height:280px"
     data-ad-client="ca-pub-2202090188729820"
     data-ad-slot="5505004995"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- blog -->
<ins class="adsbygoogle"
     style="display:inline-block;width:336px;height:280px"
     data-ad-client="ca-pub-2202090188729820"
     data-ad-slot="5505004995"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});