[英]String.IsNullOrEmpty is not detecting the Escape sequence NULL \0 in C#
您的字符串包含一个字符\\0
。
此字符是不可打印的,因此您在Watches中看不到它,但如果将str.Length
添加到str.Length
中,您将看到“1”。
那么,你的字符串是否为空? 绝对没有。 它是空的吗? 不,它包含字符。
因此, string.IsNullOrEmpty
逻辑上导致为false
,并输出“Non-Empty”。
如果由于某种原因你收到包含\\0
字符的字符串并希望将其视为空字符串,你也可以修剪\\0
:
string str = "\0".Trim(new[] { '\0', ' ', '\t' });
if (string.IsNullOrEmpty(str))
{
"Empty".Dump();
}
else
{
"Non-Empty".Dump();
}
这将输出“Empty”。
正如Patrick Hofman所建议的那样,最好使用string.IsNullOrWhiteSpace
因为它更适合这种情况,并且可以处理更广泛的空白,不可见,BOM字符等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.