我正在逐行读取文本文件,并想要在检查是否包含特殊字符的行中获取数据。 在我的情况下,我想要检查该行是否包含
<#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);
}
}
}