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

时间:2011-11-08 19:42:08

标签: c# replace

我通过一个事件收到一个字符串消息,我将它放在一个TextBox中。 不幸的是,这条消息有很多空行。如何用一个替换两个空行?

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

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

我确信有更好的方法可以实现这一目标。

6 个答案:

答案 0 :(得分:5)

您可以使用RegEx.Replace

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

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

为了您的目的,而不是寻找空白:

"\\s+";

您想查找换行符:

"\\n+";

答案 1 :(得分:5)

如何将string.Split()RemoveEmptyEntries选项一起使用:

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

这也将涵盖连续两个以上的新行,而不是仅仅两个。

答案 2 :(得分:3)

但如果连续三个换行符,那么您的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),则同样适用。

答案 3 :(得分:2)

textbox.text = Regex.Replace(inputText, @"(" + Environment.NewLine + ")+", Environment.NewLine);应该做的伎俩

答案 4 :(得分:1)

你可以使用正则表达式,但是你有两个问题。您的代码更简单 - 使用String.Replace。

答案 5 :(得分:0)

这假设有两件事。

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

2)您只想替换“换行符+换行符”发生的实例,而不是“换行符+换行符+换行符”,这将是“换行符+换行符”。记住String.Replace会创建一个新字符串。

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

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