字符串比较长度不匹配
String Comparison Length Mismatch
我正在比较两个字符串,一个是我从服务器接收到的 32 个字符的字符串,另一个是我用以下代码计算的字符串:
string getMd5(string fileName)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileName))
{
return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower();
}
}
}
问题是,即使两个字符串看起来相同,比较也会失败,因为上面函数返回的字符串包含的字符比我收到的字符串多。请看附图:
那么,我该如何解决这个问题?
谢谢。
那是因为您代码中的 ""
实际上包含两个不可见的 Unicode 字符 - 一个 'ZERO WIDTH NON-JOINER' (U+200C) and a 'ZERO WIDTH SPACE' (U+200B)。我的猜测是他们到达那里是因为源代码片段在某个时候通过了诸如 Word 之类的文字处理器。使用 string.Empty
或免费获得一个 - ""
.
我正在比较两个字符串,一个是我从服务器接收到的 32 个字符的字符串,另一个是我用以下代码计算的字符串:
string getMd5(string fileName)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileName))
{
return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower();
}
}
}
问题是,即使两个字符串看起来相同,比较也会失败,因为上面函数返回的字符串包含的字符比我收到的字符串多。请看附图:
那么,我该如何解决这个问题?
谢谢。
那是因为您代码中的 ""
实际上包含两个不可见的 Unicode 字符 - 一个 'ZERO WIDTH NON-JOINER' (U+200C) and a 'ZERO WIDTH SPACE' (U+200B)。我的猜测是他们到达那里是因为源代码片段在某个时候通过了诸如 Word 之类的文字处理器。使用 string.Empty
或免费获得一个 - ""
.