我执行模糊搜索,我想确保程序找到了正确的人实例。
因此,我将产生的“姓氏”与预期的“姓氏”进行比较。
代码相对简单:
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)
我错过了什么吗?网络中的字符串是否可以包含未显示的特殊字符?
接下来要解决什么问题?
答案 0 :(得分:2)
视觉上无法区分的空白字符(空格,不间断空格)和不可区分的非空白字符(拉丁文i和土耳其文i,v和w在瑞典语归类中)有时会导致这种情况。
在调试器中切换到十六进制视图以查看实际字符值。请注意终止的空字节。
取决于它是什么,
使用字符串比较重载之一(例如,CultureInfo
并选择不区分重音的区域性)
if (result.Equals(userName, StringComparison.InvariantCulture))
{
/* match */
}
Trim()
字符串