加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用多个分隔符类型将文本文件解析为字段

发布时间:2020-12-16 01:41:20 所属栏目:百科 来源:网络整理
导读:我正在尝试使用c#从聊天中解析日志文件,我遇到的问题是它并不是真正设计用于解析,因为它不使用标准分隔符.以下是文件中典型行的示例: 2010-08-09 02:07:54 [Message] Skylar Morris - (ATL)City Waterfront: I'll be right back date time messageType user
我正在尝试使用c#从聊天中解析日志文件,我遇到的问题是它并不是真正设计用于解析,因为它不使用标准分隔符.以下是文件中典型行的示例:

2010-08-09 02:07:54 [Message] Skylar Morris -> (ATL)City Waterfront: I'll be right back 
 date time messageType userName -> roomName: message

我想要存储的字段是:
作为DateTime类型加入的日期和时间

为messageType

用户名

ROOMNAME

信息

如果它可以通过标准分隔符(如空格,制表符或逗号)分隔,那么它将非常简单,但我对如何攻击它感到茫然.

作为后续操作,使用此代码作为模板:

List<String> fileContents = new List<String>();
string input = @"2010-08-09 02:07:54 [Message] Skylar Morris -> (ATL)City Waterfront: I'll be right back";
string pattern = @"(.*)[(.*)](.*)->(.+?):(.*)";

foreach (string result in Regex.Split(input,pattern))
{
   fileContents.Add(result.Trim());
}

我得到了7个元素(前后一个空),预期的5个元素.我怎么能纠正这个?

foreach (string result in Regex.Split(input,pattern)
        **.Where(result => !string.IsNullOrEmpty(result))**)
{
   fileContents.Add(result.Trim());
}

好的,设法用上面的代码解决它.

解决方法

你知道这句古老的谚语“有些人在面对问题时会想到”我知道,我会使用正则表达式.“现在他们有两个问题.”?

好吧,在这种情况下,你确实需要正则表达式.

在这种情况下,这个应该涵盖你:

([d]{4}-[d]{2}-[d]{2} [d]{2}:[d]{2}:[d]{2}) [([w]+)] ([a-zA-Z0-9 ]+) -> (([w]+)[a-zA-Z0-9 ]+): (.*)

你应该真的测试它.我只是把它扔在一起,它可能没有处理你能看到的一切.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读