【发布时间】:2020-05-23 05:05:27
【问题描述】:
我遇到了一个奇怪的案例,在从 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;
}
这是调试器的快照。
这可能是 Visual Studio 或 .NET 中的错误吗?我尝试使用各种可视化工具,但仍然看不到盒子里的任何东西。 .NET 4.5 C# 7.3
【问题讨论】:
-
可能是zero-width space?
-
trimmedSentence.Length的值为 1 不是已经在告诉您该字符串确实是非空的吗?你试过检查trimmedSentence[0]的值吗? -
顺便说一句:在 120% 的情况下,我认为某些事情是“……Visual Studio 或 .NET 中的错误……”,结果证明是我的错。
-
阅读here。从示例网站复制文本后,您的字符串包含不可见字符。
-
@Andrew 我的问题是如何调试它,
trimmedSentence[0]成功解锁了正确的谷歌搜索。如果您提交答案,则将其标记为已批准。