C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法有什麼區別?

2023-07-09 21:00:22

前言

今天我們將探討C#中兩個常用的字串處理方法:IsNullOrEmpty和IsNullOrWhiteSpace。這兩個方法在處理字串時非常常見,但是它們之間存在一些細微的區別。在本文中,我們將詳細解釋這兩個方法的功能和使用場景,並幫助您更好地理解它們之間的區別。

IsNullOrEmpty

作用

該方法用於檢查字串是否為null或空字串("")。如果字串為null或長度為0,返回true;否則返回false。這個方法只關注字串的長度,不考慮其中的空白字元。

原始碼實現

    /// <summary>
    /// 判斷字串是否為null或者為空字串
    /// </summary>
    /// <param name="value">字串</param>
    /// <returns></returns>
    public static bool IsNullOrEmpty([NotNullWhen(false)] string? value)
    {
        return value == null || value.Length == 0;
    }

範例

    public static void Main(string[] args)
    {
        string str1 = null;
        string str2 = "";
        string str3 = " ";
        string str4 = "追逐時光者";

        Console.WriteLine(IsStringNullOrEmpty(str1));// 輸出:True
        Console.WriteLine(IsStringNullOrEmpty(str2));// 輸出:True
        Console.WriteLine(IsStringNullOrEmpty(str3));// 輸出:False
        Console.WriteLine(IsStringNullOrEmpty(str4));// 輸出:False
    }

    public static bool IsStringNullOrEmpty(string str)
    {
        return string.IsNullOrEmpty(str);
    }

IsNullOrWhiteSpace

作用

該方法用於檢查字串是否為null、空字串("")或只包含空白字元。如果字串為null、長度為0或只包含空白字元(例如空格、製表符、換行符),返回true;否則返回false。與IsNullOrEmpty不同,IsNullOrWhiteSpace會考慮字串中的空白字元。

原始碼實現

    /// <summary>
    /// 字串是否為null、空字串或只包含空白字元[(空格、製表符、換行符等空白字元)]
    /// </summary>
    /// <param name="value">字串</param>
    /// <returns></returns>
    public static bool IsNullOrWhiteSpace([NotNullWhen(false)] string? value)
    {
        if (value == null) return true;

        for (int i = 0; i < value.Length; i++)
        {
            //判斷每個字元是否為空白字元,如果存在任何一個非空白字元,即字元不是空格、製表符或換行符等空白字元,
            //那麼條件 !char.IsWhiteSpace(value[i]) 就會為真,此時立即返回 false,表示該字串不是空字串。
            if (!char.IsWhiteSpace(value[i])) return false;
        }

        return true;
    }

範例

    public static void Main(string[] args)
    {
        string str1 = null;
        string str2 = "";
        string str3 = " ";
        string str4 = "追逐時光者";

        Console.WriteLine(IsStringNullOrWhiteSpace(str1));// 輸出:True
        Console.WriteLine(IsStringNullOrWhiteSpace(str2));// 輸出:True
        Console.WriteLine(IsStringNullOrWhiteSpace(str3));// 輸出:True
        Console.WriteLine(IsStringNullOrWhiteSpace(str4));// 輸出:False
    }

    public static bool IsStringNullOrWhiteSpace(string str)
    {
        return string.IsNullOrWhiteSpace(str);
    }