我刚刚编写了一些代码来从一些文本中删除额外的换行符.每组连续的换行符都会折叠成一个换行符.
这似乎是使用LINQ简化代码的好地方.虽然我对LINQ很新,所以不知道如何做到这一点.谁有人建议解决方案?
这是我的原始代码:
/// <summary>
/// Collapse extra newlines.
/// </summary>
private string CollapseNewlines(string script)
{
// Remove extra newlines.
var lines = script.Split('\n');
var output = new StringBuilder();
bool prevLineWasEmpty = false;
foreach (var line in lines)
{
if (line.Trim() == string.Empty)
{
if (prevLineWasEmpty)
{
continue; // Ignore this line.
}
prevLineWasEmpty = true;
}
else
{
prevLineWasEmpty = false;
}
output.Append(line);
output.Append("\n");
}
return output.ToString();
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
var lines = script.Split('\n')
.Where(line => !string.IsNullOrWhiteSpace(line));
string output = string.Join("\n", lines);
Run Code Online (Sandbox Code Playgroud)
为什么不使用正则表达式?
就像是
Regex.Replace(source, @"(\r\n)+", "\r\n");
Run Code Online (Sandbox Code Playgroud)
要么
Regex.Replace(source, @"\n+", "\n");
Run Code Online (Sandbox Code Playgroud)
Regex.Replace方法(String,String)