2013-02-25 52 views
-4

我有以下格式的日志文件在C#中返回字符串值:如何搜索和使用输入文本文件

[BugServices] WX Edit Bug: 4027909 Server: nomos-scanner.corp.adobe.com User:karansha appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013 
[BugServices] WX Edit Bug: 4027909 Server: nomos-scanner.corp.adobe.com User:karansha appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013 
[BugServices] WX Edit Bug: 4027909 Server: nomos-scanner.corp.adobe.com user:vader appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013 
[BugServices] WX Edit Bug: 4027912 Server: nomos-scanner.corp.adobe.com User:gulanand appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013 

如何管理让所有的字符串值例如说用户:值,使用C#?

+0

是哪种类型的文件? – andy 2013-02-25 12:15:45

回答

0

您可以使用正则表达式是这样的@“用户:APPGUID(*?。?)” ,你会得到的用户名列表+您可以添加其他组的正则表达式与价值。示例如下:

 StreamReader reader = new StreamReader("sample.txt"); 
     string x = reader.ReadToEnd(); 
     List<string> users = new List<string>(); 
     int numberOfUsers; 

     Regex regex = new Regex(@"(U|u)ser:(?<username>.*?) appGUID"); 
     MatchCollection matches = regex.Matches(x); 
     foreach (Match match in matches) 
     { 
      string user = match.Groups["username"].ToString().Trim(); 
      if (!users.Contains(user)) users.Add(user); 
     } 
     numberOfUsers = users.Count; 
+0

感谢您的解决方案,但在这里我遇到一个问题,使用正则表达式,我得到独特的行数,我想要的唯一的唯一“用户”从日志文件计数。你能帮我解决吗? – 2013-02-25 15:21:46

+0

我的意思是说,在我上面提到的日志文件中,有四行包含3个独特的用户,现在可以说所有的行都是唯一的,比由程序显示的结果是4,因为独特的行,我想要的是我的程序根据用户返回值。 – 2013-02-25 15:32:44

+0

根据用户,程序应该在上面的示例日志文件中返回3。 – 2013-02-25 15:33:59