gpt4 book ai didi

c# - 从文件中获取文本 C#

转载 作者:行者123 更新时间:2023-11-30 16:04:31 26 4
gpt4 key购买 nike

我正在逐行读取文本文件,我想在检查行是否包含特殊字符后获取特殊字符之间的数据。在我的例子中,我想检查行是否包含 <#Tag()>如果它包含然后获取 () 之间的字符串,即行有 <#Tag(param1)>那么它应该返回 param1

但问题是行可能包含不止一个 <#Tag()>例如行有 - <#Tag(value1)> <#Tag(value2)> <#Tag(value3)>然后它应该首先返回 value1然后value2然后 value3

string contents = File.ReadAllText(@"D:\Report Format.txt");
int start = contents.IndexOf("Header") + "Header".Length;
int end = contents.IndexOf("Data") - "Header".Length;
int length = end - start;
string headerData = contents.Substring(start, length);
headerData = headerData.Trim(' ', '-');
MessageBox.Show(headerData);
using (StringReader reader = new StringReader(headerData))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (line.Contains("<#Tag"))
{
string input = line;
string output = input.Split('<', '>')[1];
MessageBox.Show(output);
Globals.Tags.SystemTagDateTime.Read();
string newoutput = Globals.Tags.SystemTagDateTime.Value.ToString();
input = input.Replace(output, newoutput);
input = Regex.Replace(input, "<", "");
input = Regex.Replace(input, ">", "");
MessageBox.Show(input);
}
}
}

最佳答案

尝试以下

var matches = Regex.Matches(line, @"(?<=\<\#Tag\()\w+(?=\)\>)")
foreach (Match match in matches)
MessageBox.Show(match.Value);

如果您想完成评论中描述的上下文,请尝试以下操作。

  var line = "<#Tag(value1)> <#Tag(value2)>  <#Tag(value3)>";
var matches = Regex.Matches(line, @"(?<=\<\#Tag\()\w+(?=\)\>)");
//use matches in your case to find values. i assume 10, 20 , 30
var values = new Dictionary<string, int>() { { "value1", 10 }, { "value2", 20 }, { "value3", 30 } };
const string fullMatchRegexTemplate = @"\<\#Tag\({0}\)\>";
foreach (var value in values)
Regex.Replace(line, string.Format(fullMatchRegexTemplate, value.Key), value.Value.ToString());

关于c# - 从文件中获取文本 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34850263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com