在我的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#?
答案 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();