首页 > 编程语言 >C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法有什么区别?

C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法有什么区别?

时间:2023-07-09 20:57:26浏览次数:33  
标签:字符 Console string C# WriteLine 字符串 IsNullOrWhiteSpace IsNullOrEmpty null

前言

今天我们将探讨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);
    }

标签:字符,Console,string,C#,WriteLine,字符串,IsNullOrWhiteSpace,IsNullOrEmpty,null
From: https://www.cnblogs.com/Can-daydayup/p/17539077.html

相关文章

  • QNX-9—QNX官网文档翻译—Resource Managers—Handler routines
    注:本文翻译自QNXSoftwareDevelopmentPlatform-->Programming-->GettingStartedwithQNXNeutrino-->ResourceManagershttp://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.getting_started/topic/s1_resmgr_routines.html并非所有outcalls都......
  • 内置函数reduce
    1'''2filter()函数是Python内置的一个高阶函数,它用于过滤可迭代对象中的元素,只保留满足特定条件的元素。filter()函数接受两个参数:一个函数和一个可迭代对象。3语法:4filter(function,iterable)5其中:61.function是一个函数,它接受一个参数,并返回一个布......
  • USB C Power Delivery also support data transfer?
    https://www.ti.com/lit/ds/symlink/tps65987ddk.pdf?ts=1688854016963&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTPS65987DDK  ThepowerinputportonUSB-Cdockscanonlybeusedforpowerinput.ThereasonwhyUSB-Cpowerinputportscan......
  • Mac中使用命令行来加密压缩zip文档
    背景最近需要对一些文件加密,但是Mac上没有找到相应的加密工具,macOS中创建密码保护的压缩zip文件很容易并且不需要任何额外附加物或下载。使用命令行的方式处理即可。对压缩包加密之后便意味着有人想要解压缩zip文件时,必须输入正确的密码才能取出归档文件。命令压缩文件时带入......
  • PostgreSQL NUMERIC 数据类型
    基本介绍NUMERIC类型的语法:NUMERIC(precision,scale)precision表示整个数据长度,scale表示小数部分的长度。如:1234.567,precision为7,scale为3.NUMERIC类型在小数点前面长度可达到**131,072**,小数点后面长度可达到16,383。scale>=0,下面示例表示scale为0:NUME......
  • Docker系列---【Docker和宿主机如何传输文件?】
    Docker和宿主机如何传输文件?前提:Docker正在运行,即dockerps命令能看到。宿主机传输文件到dockerdockercp<宿主机文件路径><容器ID或名称>:<容器内目标路径>#例:复制宿主机文件data.txt到容器目录/app/dockercp/host/data.txtmy-container:/app/data.txtdocker传输文......
  • 网络3️⃣QUIC
    快速UDP互联网连接(QuickUdpInternetConnection)......
  • Docker学习路线1:介绍
    Docker是什么?Docker是一个开源平台,通过将应用程序隔离到轻量级、可移植的容器中,自动化应用程序的部署、扩展和管理。容器是独立的可执行单元,封装了运行应用程序所需的所有必要依赖项、库和配置文件,可以在各种环境中稳定地运行。什么是容器?容器是一种轻量级、可移植和隔离的软件......
  • TypeScript 条件类型(Conditional Types)以及 infer 关键字
    什么是条件类型条件类型可以让程序根据输入的类型来决定输出的类型是什么,也就是说根据不同的输入类型来确定输出的类型。条件类型的形式有点类似于JS中的条件表达式(condition?trueExpression:falseExpression):file:[条件类型的规则]SomeTypeextendsOtherType?TrueTyp......
  • Atcode Beginner Constest 309 E
    e题的题意又理解错了(E.FamilyandInsurance题意给定一棵或者若干棵树,以及\(m\)次操作。每次操作将一个节点后面几层的儿子节点的权值加1,求最后有多少节点的权值至少为1。思路设\(dp[i]\)为节点\(i\)后面有几个节点被覆盖,若没有覆盖为-1。DFS一遍维护每个\(dp[i]\)的最大值,......