[C#][Extension Method]String extension method(IsNull、IsNullOrEmpty、IsNullOrWhiteSpace、IsMatch)

[C#][Extension Method]String extension method(IsNull、IsNullOrEmpty、IsNullOrWhiteSpace、IsMatch)

最近看Code有些體會,對於String的空值與否的判斷,看多了覺得有點礙眼。有時候字串變數短短的,卻因為使用上必須使用String的靜態方法,像是String.IsNullOrEmpty,讓整個程式看起來變長了不少。對於讓字串變數直接可以用IsNullOrEmpty成員方法去判斷這件事,看起來也沒什麼特別的不妥,而這樣的特性可透過擴充方法實現,因此這邊整理一下對應的擴充方法,沒有一定比本來的作法好,畢竟這樣對於擴充方法認識不清的會對null object還能叫用成員方法多少有點疑惑,這邊只是做個嘗試、整理與紀錄。

 

擴充方法撰寫如下:


using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    public static class StringExtension
    {
        public static Boolean IsNull(this string str)
        {
            return str == null;
        }

        public static Boolean IsNullOrEmpty(this string str)
        {
            return string.IsNullOrEmpty(str);
        }

        public static Boolean IsNullOrWhiteSpace(this string str)
        {
            return string.IsNullOrWhiteSpace(str);
        }

        public static bool IsMatch(this string str, string pattern)
        {
            if (str.IsNullOrEmpty())
                throw new ArgumentNullException("str");
            if (pattern.IsNullOrEmpty())
                throw new ArgumentNullException("pattern");
            return Regex.IsMatch(str, pattern);
        }
    }
}

 

IsNull可用來判斷字串是否為null、IsNullOrEmpty可用來判斷字串是否為null或空值、IsNullOrWhiteSpace可用來判斷是否為null或是空白、IsMatch可帶入正規表示式判斷字串使否符合希望的格式。

 

下面這邊是簡單的使用範例:


using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string nullStr = null;
            string emptyStr = string.Empty;
            string whiteSpaceStr = new string(' ', 10);
            string matchStr = @"http://www.dotblogs.com.tw/larrynung";
            string matchPattern = ".*dotblogs.*";

            Console.WriteLine("nullStr.IsNull: " + nullStr.IsNull().ToString());
            Console.WriteLine("nullStr.IsNullOrEmpty: " + nullStr.IsNullOrEmpty().ToString());
            Console.WriteLine("nullStr.IsNullOrWhiteSpace: " + nullStr.IsNullOrWhiteSpace().ToString());

            Console.WriteLine();
            Console.WriteLine("emptyStr.IsNull: " + emptyStr.IsNull().ToString());
            Console.WriteLine("emptyStr.IsNullOrEmpty: " + emptyStr.IsNullOrEmpty().ToString());
            Console.WriteLine("emptyStr.IsNullOrWhiteSpace: " + emptyStr.IsNullOrWhiteSpace().ToString());

            Console.WriteLine();
            Console.WriteLine("whiteSpaceStr.IsNull: " + whiteSpaceStr.IsNull().ToString());
            Console.WriteLine("whiteSpaceStr.IsNullOrEmpty: " + whiteSpaceStr.IsNullOrEmpty().ToString());
            Console.WriteLine("whiteSpaceStr.IsNullOrWhiteSpace: " + whiteSpaceStr.IsNullOrWhiteSpace().ToString());

            Console.WriteLine();
            Console.WriteLine("{0} match {1}: {2}", matchStr, matchPattern, matchStr.IsMatch(matchPattern));
        }
    }
}

 

運行結果如下:

image