删除多个空行最快的方法是什么?
本文关键字:方法 是什么 删除 | 更新日期: 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