0

C Sharp を使用して、「GSA 検索」の合計「経過時間」のみを合計したい:

以下は私のログファイルです:

WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:975ms SaveSearchID:361
WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:875ms SaveSearchID:361
GSA Search = Server:testserver User:gulanand appGUID: wx Elapsed Time:890ms SaveSearchID:361
GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:887ms SaveSearchID:361
GSA Search = Server:testserver User: gulanand appGUID: wx Elapsed Time:875.5ms SaveSearchID:361
GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:877.6ms SaveSearchID:361

私が試したコードは次のとおりです。

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);
                }
            }

            string x = string.Join(",", results);
            List<string> time = new List<string>();
            Regex regex = new Regex(@"Elapsed Time:(?<timevalue>\d+(?:\.\d)?)ms");
            MatchCollection matches = regex.Matches(x);
            foreach (Match match in matches)
            {
                var value = match.Groups["timevalue"].Value;
                if (!time.Contains(value)) time.Add(value);
            }
4

1 に答える 1

1

ここにあなたが始めるための何かがあります

string text = @"WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:975ms SaveSearchID:361 WX Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:875ms SaveSearchID:361 GSA Search = Server:testserver User:gulanand appGUID: wx Elapsed Time:890ms SaveSearchID:361 GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:887ms SaveSearchID:361 GSA Search = Server:testserver User: gulanand appGUID: wx Elapsed Time:875.5ms SaveSearchID:361 GSA Search = Server:testserver User:vibsharm appGUID: wx Elapsed Time:877.6ms SaveSearchID:361";
var elapsedTime = text.ToLower().Split(' ').Where(line => line.StartsWith("time"))
                  .Select(timeLine => decimal.Parse(timeLine.Split(':')[1].Replace("ms",String.Empty)))
                  .Sum( time => time);

ミリ秒での出力: 5380.1

ああ、「GSA 検索」だけと言っていたことに今気付きました。その場合は、まず「GSA 検索」でフィルタリングしてから、上記のコードを適用する必要があります。あなたのコードでは、すでにそれを行っています

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)))
                     .Sum( time => time);
于 2013-03-03T15:00:16.620 に答える