我有一个包含以下行的文件
01/11/2009 23:23:23 ddd ttt,XYZ说你好
contains a paragraph of text which is not relevant
01/11/2009 23:23:23 ddd ttt,XYZ说早上
01/12/2009 21:21:21 ddd ttt,XYZ说你好吗
你最终的事情
你可以给我回电话吗?
contains a paragraph of text which is not relevant
01/12/2009 21:21:21 ddd ttt,XYZ说你好吗
这是我的问题, 我只使用StreamReader类读取包含日期,时间和关键字“Says”的那些行。在这样做时,提取了1行的所有聊天记录,但是具有多于1行的那些聊天记录被截断。 例如:01/12/2009 21:21:21 ddd ttt,XYZ说你怎么被提取但是句子
how are things at your end
Can you cal me back?
被截断了。 任何人都可以告诉我如何在不截断的情况下提取聊天记录的所有细节。
using (StreamReader sr = new StreamReader(path))
{
while (File line = sr.readline())
{
if(line.contains("/") && line.contains(":") && line.contains("Says")
{
output the line to another file
}
}
}
答案 0 :(得分:1)
我尝试了以下内容:
结果是一个字符串列表,每个字符串包含一个会话令牌。
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
var tokens = new List<string>();
foreach (string line in File.ReadAllLines("C:\\temp\\test.txt"))
{
if (Regex.IsMatch(line, @"^\d\d/\d\d/\d\d\d\d \d\d:\d\d:\d\d"))
{
tokens.Add(line);
}
else if(tokens.Count > 0)
{
tokens[tokens.Count - 1] += "\r\n" + line;
}
}
}
}
}