替换方法不会替换破折号为空字符串
我想使用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("-", "");
}
您添加了代码给绝对删除破折号。短,但完整的程序,以证明:
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 :)
很难真正猜出哪些(或其他)是问题,但该代码不是它...
嗯,我必须有一些错误的话。我会仔细检查。 – HelpNeeder 2012-01-29 09:01:57
好吧,这很奇怪。当我在'InitializeComponents()'后面'txtSHA1.Text =“test”;'时,我看到正确的行。但是当我做'txtSHA1.Text =“tesy”+ BitConverter.ToString(hash).Replace(“ - ”,string.Empty);'text'test'不包含在文本框中。 – HelpNeeder 2012-01-29 09:08:04
好吧,我想我确实犯了一个错误。不管怎么说,还是要谢谢你。我有同样的方法两次..大声笑 – HelpNeeder 2012-01-29 09:13:51
短划线和连字符之间的区别? http://msdn.microsoft.com/en-us/library/3a733s97.aspx
不太确定。只是我在黑暗中猜测。
+1为有用的东西阅读:) – HelpNeeder 2012-01-29 09:16:31
什么是txtSHA1?任何方式试图将代码分成几个位。 'txtSHA1.Text = BitConverter.ToString(hash).Replace(“ - ”,“”); '变成'var a = BitConverter.ToString(hash);''var b = a.Replace(“ - ”,“”);' 'txtSHA1.Text = b;' – Nahum 2012-01-29 09:05:34
@Nahum Litvin,这似乎不起作用。这很奇怪。 – HelpNeeder 2012-01-29 09:11:23
好的,解决了。原因?我的愚蠢。大声笑 – HelpNeeder 2012-01-29 09:14:22