在C#中,删除空行的最佳方法是什么,即只包含字符串空格的行?如果这是最好的解决方案,我很高兴使用正则表达式.
编辑:我应该添加我使用.NET 2.0.
赏金更新:奖励之后我会回滚,但我想澄清一些事情.
首先,任何Perl 5 compat正则表达式都可以.这不仅限于.NET开发人员.标题和标签已经过编辑以反映这一点.
其次,虽然我在赏金细节中给出了一个简单的例子,但它并不是你必须满足的唯一测试.您的解决方案必须删除除空格以外的所有行,以及最后一行换行符.如果有一个字符串,在运行正则表达式后,以"/ r/n"或任何空白字符结尾,则会失败.
Chr*_*ich 20
如果要删除包含任何空格(制表符,空格)的行,请尝试:
string fix = Regex.Replace(original, @"^\s*$\n", string.Empty, RegexOptions.Multiline);
Run Code Online (Sandbox Code Playgroud)
编辑(对于@Will):修剪尾随换行符的最简单的解决方案是TrimEnd
在结果字符串上使用,例如:
string fix =
Regex.Replace(original, @"^\s*$\n", string.Empty, RegexOptions.Multiline)
.TrimEnd();
Run Code Online (Sandbox Code Playgroud)
Tho*_*que 16
string outputString;
using (StringReader reader = new StringReader(originalString)
using (StringWriter writer = new StringWriter())
{
string line;
while((line = reader.ReadLine()) != null)
{
if (line.Trim().Length > 0)
writer.WriteLine(line);
}
outputString = writer.ToString();
}
Run Code Online (Sandbox Code Playgroud)
Sky*_*ers 13
脱离我的头顶......
string fixed = Regex.Replace(input, "\s*(\n)","$1");
Run Code Online (Sandbox Code Playgroud)
转过来:
fdasdf asdf [tabs] [spaces] asdf
进入这个:
fdasdf asdf asdf
使用LINQ:
var result = string.Join("\r\n",
multilineString.Split(new string[] { "\r\n" }, ...None)
.Where(s => !string.IsNullOrWhitespace(s)));
Run Code Online (Sandbox Code Playgroud)
如果您正在处理大输入和/或不一致的行结尾,则应使用StringReader并使用foreach循环执行上述old-school.