从文本文件中的任何位置获取价值

use*_*457 0 c# linq

我有一个值"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)

Ian*_*Ian 5

可能最简单的方法是使用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