替换方法不会将破折号替换为空字符串

时间:2012-01-29 08:56:01

标签: c# .net replace

我正在尝试使用SHA1散列文件。结果如下所示:B7-DB-B9-93-E7-2F-6F-EB-6D-CD-CC-A8-DE-D2-F1-01-6E-8A-53-BC

如何将短信替换为空字符串或只删除它们?

代码试图替换破折号,但似乎它没有改变任何东西,破折号仍然存在。

using (HashAlgorithm hashSHA1 = new SHA1Managed())
using (Stream file = new FileStream(ofdBrowse.FileName, FileMode.Open, FileAccess.Read))
{
    byte[] hash = hashSHA1.ComputeHash(file);

    txtSHA1.Text = BitConverter.ToString(hash).Replace("-", "");
}

2 个答案:

答案 0 :(得分:3)

破折号和连字符之间的区别? http://msdn.microsoft.com/en-us/library/3a733s97.aspx

不太确定。只是我在黑暗中的猜测。

答案 1 :(得分:2)

您提供的代码肯定删除破折号。简短但完整的程序来证明:

using System;
using System.IO;
using System.Security.Cryptography;

class Test
{
    static void Main(string[] args)
    {
        using (HashAlgorithm hashSHA1 = new SHA1Managed())
        {
            // Actual data doesn't matter
            using (Stream data = new MemoryStream())
            {
                byte[] hash = hashSHA1.ComputeHash(data);

                Console.WriteLine(BitConverter.ToString(hash).Replace("-", ""));
            }
        }
    }
}

所以,问题的潜在原因:

  • 您没有运行您认为自己的构建
  • 你有其他代码可以进行散列,但没有进行Replace调用
  • 您正在查看UI的错误位置:)

很难真正猜出哪些(或其他任何东西)是问题,但那段代码不是......