从字符串中获取一些特定的行

时间:2013-12-26 16:05:59

标签: c# string

在我的C#应用​​程序中,我有一个包含以下内容的字符串:

Microsoft (R) Visual C# Compiler version 4.0.30319.17929

for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.

f:\Code\Code\Executable\test.cs(8,23): error CS0161: 'Class1.Test()': not all code paths return a value
f:\Code\Code\Executable\test.cs(14,20): error CS0161: 'Class1.GetNumber()': not all code paths return a value

从这个字符串中,我想获得以下两行并将它们存储在两个变量中。

string error1 = f:\Code\Code\Executable\test.cs(8,23): error CS0161: 'Class1.Test()': not all code paths return a value

string error2 = f:\Code\Code\Executable\test.cs(14,20): error CS0161: 'Class1.GetNumber()': not all code paths return a value

我怎样才能使用C#?

3 个答案:

答案 0 :(得分:1)

我假设你想保留代表错误的每一行。

如果您的初始字符串保存在变量text中,您可以执行以下操作:

List<string> keptLines = new List<string>();
foreach(string line in text.Split(new [] { '\r', '\n' })){
  if ( line.Contains("error CS0161:") ) //Or any other criterion
  {
    keptLines.Add(line);
  }
}

答案 1 :(得分:0)

如果你知道你只想要最后两行,这应该有效:

var lines = myString.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
var error1 = lines[lines.Length - 2];
var error2 = lines[lines.Length - 1];

或者要获得'标题'之后的所有行,您可以这样做:

var lines = myString.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
var errors = new string[lines.Length - 3];
Array.Copy(lines, 3, errors, 0, errors.Length);

答案 2 :(得分:0)

 var query = txt.Split(new char[] { '\r', '\n' })
             .Where(line => line.Contains("error"))
             .ToList();