C# 从字符串中删除最后一行

C# 从字符串中删除最后一行,c#,string,winforms,C#,String,Winforms,我有一个字符串,看起来像这样: line1 line2 line3 line4 我想删除最后一行(第4行)。我该怎么做 我尝试过类似的操作,但它要求我知道最后一行包含多少字符: output = output.Remove(output.Length - 1, 1) 如果将字符串定义为: string str = @"line1 line2 line3 line4"; 然后你可以做: strin

我有一个字符串,看起来像这样:

line1
line2
line3
line4
我想删除最后一行(第4行)。我该怎么做

我尝试过类似的操作,但它要求我知道最后一行包含多少字符:

output = output.Remove(output.Length - 1, 1)

如果将字符串定义为:

string str = @"line1
                line2
                line3
                line4";
然后你可以做:

string newStr = str.Substring(0, str.LastIndexOf(Environment.NewLine));
string newStr = str
                   .Substring(0, str.Trim().LastIndexOf(Environment.NewLine));
如果字符串有起始/结束空格或换行符,则可以执行以下操作:

string newStr = str.Substring(0, str.LastIndexOf(Environment.NewLine));
string newStr = str
                   .Substring(0, str.Trim().LastIndexOf(Environment.NewLine));

您可以将其拆分,除最后一行外,使用
String.Join
创建最后一个字符串

string[] lines = str.Split(new []{Environment.NewLine}, StringSplitOptions.None);
str = string.Join(Environment.NewLine, lines.Take(lines.Length - 1));
另一种选择:

str = str.Remove(str.LastIndexOf(Environment.NewLine));
如果最后一行为空或仅包含空格,并且需要继续删除行,直到删除非空格行,则只需在调用
LastIndexOf
之前先修剪字符串的结尾:

str = str.Remove(str.TrimEnd().LastIndexOf(Environment.NewLine));

找到最后一个换行符,并获取该换行符之前的字符串部分:

theString = theString.Substring(0, theString.LastIndexOf(Environment.NewLine));

发布您的最佳尝试,我们将帮助您解决问题。次要说明:如果
str
字符串开头包含空格,则
Trim
之后的
LastIndexOf
将不会返回正确的索引
TrimEnd
更安全。要修剪两端,请在
子字符串之后调用
TrimStart