【发布时间】:2019-10-11 13:40:59
【问题描述】:
我执行模糊搜索,我想确保程序找到了正确的人实例。
因此,我将生成的“lastname firstname”与预期的“lastname firstname”进行比较。
代码比较简单:
string expectedUserName = $"{nameSplit[0].ToLower()} {nameSplit[1].ToLower()}"; // result: "bechtold julian"
string result = O365Api.SearchUser(mail); // result: "bechtold julian"
if (result.Equals(expectedUserName))
{
// Correct user is found
// Never enters here
}
为了测试,我还硬编码了期望值:
userName = "bechtold julian";
mail = "julian.bechtold";
string result = O365Api.SearchUser(mail);
if (result.Equals(userName))
{
// Correct user is found
// never enters here
}
使用不同的比较方法时结果相同:
if (result == userName)
我错过了什么吗?来自网络的字符串是否可以包含未显示的特殊字符?
解决问题的后续步骤是什么?
【问题讨论】:
-
也许其中一个以 ASCII NUL 字符 \0 结尾。两个字符串的长度相同吗?如果您 Encoding.ASCII.GetBytes() 它们返回相同的数组吗?如果你做 a.StartsWith(b) 或 b.StartsWith(a) 其中之一是真的吗? ascii NUL 的问题是,当您查看它时,例如在屏幕截图中,您看不到 nul 或任何代表它的东西。在过去(嗯,即使是现在……但很少遇到)你甚至可以有长度为 7 的“abc\0def”,但它在文本框中看起来像“abc”
-
==和Equals在System.String上是相同的,除非您覆盖 == 运算符。在调试器中切换到十六进制视图 -
来自网络的字符串可能包含未显示的特殊字符吗? 使用 ToCharArray() 并使用结果编辑问题。
标签: c# string selenium if-statement web-scraping