我有一个大文本文件。其中有很多不相关的数据。我可以将它读入StreamReader并执行while循环。我的文本文件是这样的
MyStartString "回复:"我对来自web service1的回复 的 MyEndString 介于两者之间的数据 *** MyStartString * "回复:"我对来自web service2的回复 ** MyEndString
所以它会像这样(大约70MB文件)。我需要检索"响应:"我的回复来自web service1和"响应:"我的回复来自web service2等到列表中。我看到我们可以用Regex做到这一点。有人可以帮我吗。我在这上面看到Stackoverflow post。
更新:我粘贴在我的文件提取下面。所以,你可以看到" **** MgrType Response Body **"和" **结束::"下面。他们之间有一个回应。我需要得到那些回复。图像文件
我的文件摘录:
employeetype:manager
MgrType请求有效负载 {"活动":[{"部分数据"}]}}}}}}
**** Nfn响应标题**
X-Original-HTTP-Status-Code:200
MyID:cc24e044-babf-46d3-bda5-bb0de1e586e5
连接:关闭
日期:2016年6月14日星期二21:28:01 GMT
* MgrType响应正文
{"响应" {"一些数据1 \ n ---结束消息--- \ n"}]}}}
结束:: 1中的事件1
*使用Nfn完成xyzserver *
SOMEDATA HERE1
SOMEDATA HERE2
SOMEDATA HERE3
SOMEDATA HERE4
...
SOMEDATA HERE555
* MgrType响应正文
{"响应" {"一些数据2 \ n ---结束消息--- \ n"}]}}}
结束:: 1中的事件1
*使用Nfn完成xyzserver *
答案 0 :(得分:0)
使用Regex.Match并在模式中搜索起始字符串和结束字符串之间的任何字符。如果匹配,请添加到列表中。
string s;
List<string> sList = new List<string>();
using(StreamReader oReader = new StreamReader("Text1.text"))
{
while((s = oReader.ReadLine()) != null)
{
sList.Add(Regex.Match(s, @"MyStartString(.+?)MyEndString").Groups[1].Value);
}
}
foreach(string s in sList)
Console.WriteLine(s);