[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));
}
}
}
運行結果如下: