当前位置: 首页 > 知识库问答 >
问题:

string.IsNullorEmpty&string.IsNullorWhitespace为空字符串返回false

洪增
2023-03-14

我遇到过一个奇怪的情况,在MSFT Azure短语断路器处理完一段文本后,有一段代码被设计用来剔除空白字符串、句点破折号等。我需要帮助找出如何调试这个问题。

当给定“”值时,以下代码块返回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;
}

下面是调试器的快照。

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

共有1个答案

宰父跃
2023-03-14

正如我在评论中所说的,在该屏幕截图中,您可以看到trimmedsentence.lengty是1,因此它不是空的,而且它的内容肯定不是标准的空格。如果字符串显示为空,那是因为它有一个所谓的不可见字符。要检查字符串的内容,可以通过执行trimmedst句[0]直接访问该字符。

如果该字符经常出现,您可能需要考虑执行以下操作:

string trimmedSentence = sentence.Trim().Replace("<this special character>", "");

或者,您可以通过执行char.convertFromutF32(yourCharCode).toString()从Unicode值创建可替换字符串。不能使用使用字符参数的replace重载,因为没有“空”字符,只有空字符串。您应该能够在调试时获得此值。或者如果需要,通过执行(int)trimmedst句[0]

 类似资料:
  • 问题内容: 我犹豫要问这个问题,因为它看起来很奇怪。但不管怎么说。以防万一有人已经遇到了相同的问题…文件系统功能(fopem,file,file_get_contents)对于http://包装器表现得很奇怪 它似乎有效。 没有提出错误 。fopen()返回资源。 它不会为所有肯定有效的网址返回任何数据(例如)。 文件返回空数组,file_get_contents()返回空字符串,fread返回f

  • 我完全被Protobuf的问题困住了 给定以下代码: 这将计算为true并退出应用程序。什么可能使protobuf在MessageName上返回空字符串?我可以看到,这些类型及其名称在生成的protobuf消息代码中进行了应有的注册: 我还验证了上面的init实际运行,它确实运行。 我有其他生成的原始消息,它们会按预期返回它们的名称。那么这里出了什么问题? 编辑原型文件如下所示 再次编辑。手动调用

  • 问题内容: 我有一个带有3个嵌套数组的简单php结构。 我不使用特定的对象,而是使用2个嵌套循环构建数组。 这是我要转换为Json的数组的var_dump的示例。 在另一个脚本中,我具有类似的结构并且工作正常。所以我不明白为什么在这里不起作用。 编辑:似乎有编码问题。当返回ASCII,该作品但当它返回UTF8,它不工作了。 Edit2:返回表示:格式错误的UTF-8字符,可能编码不正确。 问题答案

  • 问题内容: 这可能是最简单的事情之一,但我看不到自己在做错什么。 我的输入包括一个带有数字的第一行(要读取的行数),一串包含数据的行和最后一行仅包含\ n的行。我应该处理此输入,并在最后一行之后做一些工作。 我有这个输入: 对于读取输入,我有以下代码。 我的问题是为什么我什么都不打印?程序读取第一行,然后不执行任何操作。 问题答案: 不读取以下换行符,因此第一个(返回 当前 行的其余部分 )将始终

  • 问题内容: 这是有效的,并返回JavaScript中的字符串 为什么?这是怎么回事 问题答案: 如果我们将其拆分,则混乱等于: 在JavaScript中,确实是这样。将某物转换为数字,在这种情况下,它将降为或(请参见下面的规范详细信息)。 因此,我们可以简化它(优先于): 因为意思是:从中获取第一个元素,所以确实: 返回内部数组()。由于引用,说错了,但是让我们调用内部数组以避免错误的表示法。 在

  • 问题内容: 为什么要得到一个空字符串?我的代码是: 此代码警报,但我想得到,我怎么了?谁能帮我? 更新 我更改了CSS函数,现在可以正常使用了: 问题答案: 该属性用于获取直接放置在元素上的样式。它不会从样式表中计算样式。