我遇到了隐藏字符 \0
的问题这很像 string.IsNullOrWhiteSpace 方法不将其视为空白的“空白”。我想知道为什么这在 .NET 中以这种方式实现,是否有任何替代 string.IsNullOrWhiteSpace 可以正确处理空终止字符的方法?
提前致谢。
最佳答案
U+0000基本上不是空格。 char.IsWhitespace('\0')
返回 false,它没有被列为空格...IsNullOrWhitespace
的空部分指的是字符串引用本身 - 不是内容,如果那是您的想法。
请注意,.NET 中的字符串在托管代码中在逻辑上不是“以空字符结尾的”,尽管在 CLR 级别实践中,出于互操作的目的,它们是。 (字符串知道它自己的长度,但为了更容易地使用需要空终止符的 native 代码,CLR 确保在字符串内容之后总是有一个 U+0000。)如果你最终得到包含 \0
的字符串你可能应该修复任何产生它的东西。
关于.net - 为什么 string.IsNullOrWhiteSpace ("\0") 是假的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31053831/