如何在字符串中跳过单词,直到使用C#找到"DETAIL:"?

anm*_*rti -3 c# linq

我有这个字符串:

USERNAME: ADMIN|00004|GI FILE: Lorem ipsum dolor sit amet1.docx DETAIL:There was no endpoint listening at http://localhost:5557/
Run Code Online (Sandbox Code Playgroud)

我想跳到DETAIL:,仅产生:

There was no endpoint listening at http://localhost:5557/
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C#中实现这一目标?

Dou*_*las 5

您可以使用字符串操作而不是LINQ:

string substr = str.Substring(str.IndexOf("DETAIL:") + "DETAIL:".Length);
Run Code Online (Sandbox Code Playgroud)

此代码假定字符串始终包含"DETAIL:"为子字符串.如果可能没有,那么你应该处理这种情况.计算成本最低的方法是检查str.IndexOf("DETAIL:")不返回-1.

string substr = null;
int pos = str.IndexOf("DETAIL:");
if (pos >= 0)
    substr = str.Substring(pos + "DETAIL:".Length);
else
    // Handle missing "DETAIL:"
Run Code Online (Sandbox Code Playgroud)

编辑:如果您绝对想要使用LINQ,您可以将字符串视为字符序列并使用以下(低效)代码:

string keyword = "DETAIL:"; 
int length = keyword.Length;
char[] chars = str.Select((c, i) => str.Skip(i))
                  .First(s => s.Take(length).SequenceEqual(keyword))
                  .Skip(length)
                  .ToArray();
string substr = new string(chars);
Run Code Online (Sandbox Code Playgroud)