我想在“GSA 搜索”中计算总“经过时间”,但我面临着差异。在某些情况下,格式为“Elapsed Time: 97ms”,在某些情况下为“Elapsed Time:97ms”。我如何涵盖这两种情况?
以下是我的日志文件格式:
WX 搜索 = 服务器:nomos-scanner.corp.com 用户:vibsharm appGUID:wx 已用时间:975 毫秒 SaveSearchID:361 WX 搜索 = 服务器:nomos-scanner.corp.com 用户:vibsharm appGUID:wx 已用时间:875 毫秒 SaveSearchID:361 GSA 搜索 = 服务器:nomos-scanner.corp.com 用户:gulanand appGUID:wx 已用时间:890 毫秒 SaveSearchID:361 GSA 搜索 = 服务器:nomos-scanner.corp.com 用户:vibsharm appGUID:wx 已用时间:887 毫秒 SaveSearchID:361 GSA 搜索 = 服务器:nomos-scanner.corp.com 用户:gulanand appGUID:wx 经过时间:875.5 毫秒 SaveSearchID:361 GSA 搜索 = 服务器:nomos-scanner.corp.com 用户:vibsharm appGUID:wx 已用时间:877.6 毫秒 SaveSearchID:361
我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Linq.Expressions;
namespace ConsoleApplication5
{
class Program
{
public static void Main(string[] args)
{
string searchKeyword = "WX GSA Search";
string fileName = @"C:\Users\karan\Desktop\Sample log file.txt";
string[] textLines = File.ReadAllLines(fileName);
List<string> results = new List<string>();
foreach (string line in textLines)
{
if (line.Contains(searchKeyword))
{
results.Add(line);
}
}
var elapsedTime = results.SelectMany(line => line.ToLower().Split(' '))
.Where(line => line.StartsWith("time"))
.Select(timeLine => decimal.Parse(timeLine.Split(':')[1].Replace("ms", String.Empty)))
.Average(time => time);
Console.WriteLine(elapsedTime);
// keep screen from going away
// when run from VS.NET
Console.ReadLine();
}
}
}