C#
中这些命令之间的区别是什么string text= " ";
1-string.IsNullOrEmpty(text.Trim())
2-string.IsNullOrWhiteSpace(text)
答案 0 :(得分:146)
IsNullOrWhiteSpace
是一种类似于的方便方法 以下代码,但它提供了卓越的性能:return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
空白字符由Unicode标准定义。该
IsNullOrWhiteSpace
方法解释返回a的任何字符 将值作为传递给Char.IsWhiteSpace
方法的值为true 白色空间。
答案 1 :(得分:34)
第一种方法检查字符串是否为空或字符串。在您的示例中,您可能冒着空引用的风险,因为在修剪之前没有检查null
1- string.IsNullOrEmpty(text.Trim())
第二种方法检查字符串是否为空或字符串中的任意数量的空格(包括空字符串)
2- string .IsNullOrWhiteSpace(text)
方法IsNullOrWhiteSpace
涵盖IsNullOrEmpty
,但如果字符串包含空格,它也会返回true
。
在你的具体例子中,你应该使用2)因为你在方法1)中冒着空引用异常的风险,因为你在一个可能为null的字符串上调用trim
答案 2 :(得分:34)
空格,标签
\t
和换行符\n
是差异
string.IsNullOrWhiteSpace("\t"); //true
string.IsNullOrEmpty("\t"); //false
string.IsNullOrWhiteSpace(" "); //true
string.IsNullOrEmpty(" "); //false
string.IsNullOrWhiteSpace("\n"); //true
string.IsNullOrEmpty("\n"); //false
https://dotnetfiddle.net/4hkpKM
还会看到以下答案:whitespace characters
答案 3 :(得分:6)
String.IsNullOrEmpty(string value)
返回true
。
作为参考,空字符串由“”(两个双引号字符)
String.IsNullOrWhitespace(string value)
将返回true
。
要查看哪些字符计为空格,请参阅此链接: http://msdn.microsoft.com/en-us/library/t809ektx.aspx
答案 4 :(得分:4)
这是反编译后方法的实现。
public static bool IsNullOrEmpty(String value)
{
return (value == null || value.Length == 0);
}
public static bool IsNullOrWhiteSpace(String value)
{
if (value == null) return true;
for(int i = 0; i < value.Length; i++) {
if(!Char.IsWhiteSpace(value[i])) return false;
}
return true;
}
很明显, IsNullOrWhiteSpace 方法也会检查传递的值是否包含空格。
空白参考:https://msdn.microsoft.com/en-us/library/system.char.iswhitespace(v=vs.110).aspx
答案 5 :(得分:3)
如果您的字符串(在您的情况下变量text
)可能为null,则会产生很大的差异:
1 - string.IsNullOrEmpty(text.Trim())
- &GT; EXCEPTION ,因为您调用了一个空对象的mthode
2 - string.IsNullOrWhiteSpace(text)
这样可以正常工作,因为内部检查了空问题
要使用第一个选项提供相同的行为,您必须以某种方式检查它是否先为空,然后使用trim()方法
if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }
答案 6 :(得分:0)
string.isNullOrWhiteSpace(text) 在大多数情况下应该用作它还包含一个空白字符串。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
//Your code goes here
var str = "";
Console.WriteLine(string.IsNullOrWhiteSpace(str));
}
}
}
返回 True !
答案 7 :(得分:0)
[性能测试]以防万一有人想知道,在秒表测试中比较
if(nopass.Trim()。Length&gt; 0)
if(!string.IsNullOrWhiteSpace(nopass))
结果如下:
Trim-Length,空值= 15
非空值的修剪长度= 52
IsNullOrWhiteSpace,空值= 11
IsNullOrWhiteSpace非空值= 12