Replace方法不';t将短划线替换为空字符串

本文关键字:替换 字符串 方法 Replace | 更新日期: 2023-09-27 18:21:59

我正在尝试使用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("-", "");
}

Replace方法不';t将短划线替换为空字符串

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

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

您给的代码肯定会删除短划线。简短但完整的程序来证明:

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的位置:)

很难真正猜测其中哪一个(或其他任何东西)是问题所在,但代码不是吗…