删除多个空行最快的方法是什么?

本文关键字:方法 是什么 删除 | 更新日期: 2023-09-27 18:13:45

我通过一个事件得到一个字符串消息,我把它放在一个文本框。不幸的是,这条信息有很多空行。我如何用一行替换两个空行?

我的第一个想法是这样的:

string newLine = Environment.NewLine;
textbox.text = msg.Replace(newLine + newLine, newLine);

我相信会有更好的方法来做到这一点。

删除多个空行最快的方法是什么?

您可以使用RegEx.Replace

事实上,关于该函数的MSDN文章展示了如何摆脱过多的空白,非常接近你想要做的:

http://msdn.microsoft.com/en-us/library/xwewhkd1.aspx

对于您的目的,而不是寻找空白:

"''s+";

你想要查找换行符:

"''n+";

如何利用string.Split()与选项RemoveEmptyEntries:

message = string.Join(Environment.NewLine, message.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries));

这也将涵盖一行中两个以上的换行符,而不是仅仅两个。

但是如果连续有三个换行符,您的String.Replace解决方案将不起作用。例如,考虑:

string s = "hello'n'n'n'n'n'n'n'n'n'n'n'nworld";
string s1 = s.Replace("'n'n", "'n");
string s2 = Regex.Replace(s, "''n{2,}", "'n");

s1将包含多个'n字符。s2只有一个。

这是使用'n作为一个例子,但同样的事情适用于如果你使用Environment.NewLine(即'r'n)。

textbox.text = Regex.Replace(inputText, @"(" + Environment.NewLine + ")+", Environment.NewLine);就可以了

您可以使用正则表达式,但是您会遇到两个问题。您的代码更简单——使用String.Replace.

这里有两个假设:

1)您要替换的换行符是Windows换行符,并说Unix换行符。

2)你只想替换"newline + newline"发生的实例,而不是"newline + newline + newline",这将是"newline + newline"。记得字符串。Replace创建一个新字符串。

换句话说,你的想法有缺陷。

我建议阅读这个:http://www.dotnetperls.com/remove-whitespace