c# - string.IsNullOrEmpty & string.IsNullOrWhiteSpace 为空字符串返回 false

标签 c# .net

我遇到了一个奇怪的案例,其中一段代码旨在从 MSFT Azure Phrase Breaker 处理一段文本后清除空白字符串、句点破折号等。我可以借助帮助来弄清楚如何调试问题。

当给定 "" 值时,以下代码块返回 true。显然,预期方法应该在第一个 if 语句之后返回 false。在要查看的 899 个短语中,似乎只有两个有这个问题。也发生在另一台机器上。

public static bool IsSentenceTranslatable(string sentence)
{
    string trimmedSentence = sentence.Trim();

    if (string.IsNullOrEmpty(trimmedSentence) || string.IsNullOrWhiteSpace(trimmedSentence))
    {
        return false;
    }

    switch (trimmedSentence)
    {
        case " ":
        case ".":
        case "-":
        case "·":
            return false;
    }

    return true;
}

这是调试器的快照。

Debugger Snapshot

这可能是 Visual Studio 或 .NET 中的错误吗?我尝试使用各种可视化工具,但仍然看不到盒子里的任何东西。 .NET 4.5 C# 7.3

最佳答案

尝试获取字符串的字节表示。我怀疑它实际上包含一些在 VS 调试器中不可见但不算作空格的字符。

请参阅此问题以获取提示:

UPD:因为你的 Watch 窗口显示在调用 string trimmedSentence = sentence.Trim() 之后你有 trimmedSentence.Length == 1,我会升级我的怀疑到确定。

关于c# - string.IsNullOrEmpty & string.IsNullOrWhiteSpace 为空字符串返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60107043/

相关文章:

c# - 为什么在统一使用 Pixelperfect 相机时无法更改相机视口(viewport)矩形?

.net - .NET 是否有轻量级、更可取的开源、可格式化的标签控件?

c# - Windows IOT 广播网络摄像头

c# - 无法在 C# 项目中使用 GetValues 和 SetValues

c# - 使用 System.Drawing 改变形状

c# - 我应该在 FluentValidation 中为 Collection 创建一个新类型吗?

c# - 将一个数字加密为另一个相同长度的数字

c# - 使用 Linq 递归查询 XML

c# - 检查数组项的字符串并匹配它

c# - 如何使用 linq 树表达式创建具有动态列的数据透视表