我有一个值"md5:[md5 value here]",它出现在一行中间大约15行到文本文件中.
IE:
File was uploaded successfully, md5: [md5_value_would_be_here]
Run Code Online (Sandbox Code Playgroud)
我无法控制txt文件内容,因此无法将值写入新行,然后将其拉出.
在c#中我将如何获取md5的值:(我知道批处理我可以使用查找和替换,但完全消除了如何在c#中执行此操作).
任何帮助赞赏:)
继承人到目前为止我正在使用的...
var data = File
.ReadAllLines("file.txt")
.Select(x => x.Split('='))
.Where(x => x.Length > 1)
.ToDictionary(x => x[0].Trim(), x => x[1]);
string serverFileMD5 = data["md5"];
Run Code Online (Sandbox Code Playgroud)
谢谢
更新:
以下未取得成功,
String data = File.ReadAllText("File.txt");
String pattern = "md5: ([a-zA-Z0-9]*) ";
Regex reg = new Regex(pattern);
Match m = reg.Match(data);
if (m.Success)
{
Group g = m.Groups[1]; // This should be the hash
Console.WriteLine("value of g: " + g);
serverFileMD5 = g.Value;
}
Run Code Online (Sandbox Code Playgroud)
可能最简单的方法是使用Regex.首先,我可能会将整个文件读入一个字符串:
String content = File.ReadAllText()
然后你可以使用以下几行:
String pattern = "md5: \[([a-zA-Z0-9]*)\]";
Regex reg = new Regex(pattern);
Match m = reg.Match(content);
if(m.Success) {
Group g = m.Groups[1]; // This should be the hash
String hash = g.Value;
}
Run Code Online (Sandbox Code Playgroud)
这假设您的哈希包含大写字符,小写字符和数字.它的工作原理如下:
md5:- 字面上寻找md5:开始匹配
\[- 寻找一个开放式支架,\用于逃生
(...)- 创建匹配组,此处匹配的位将使m.Groups[1]访问结果更容易.
[a-zA-Z0-9]* - 这是说匹配任何字母字符或数字的漫长道路.请注意,这些*方法与其中许多匹配,没有它,它只是拾取第一个字符.
\] - 只需寻找一个紧密的支架,再次逃脱
如果您需要有关Regex的更多信息来帮助您修改捕获,我建议您查看一份备忘单,例如Regexlib.com