2

一部のテキストから余分な改行を削除するコードをいくつか書きました。連続する改行のすべてのセットは、単一の改行に折りたたまれます。

これは、コードを簡素化するために 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();
}
4

2 に答える 2

7

これを試して:

var lines = script.Split('\n')
            .Where(line => !string.IsNullOrWhiteSpace(line));

string output = string.Join("\n", lines);
于 2012-08-13T04:47:17.090 に答える
5

むしろ正規表現を使用しないのはなぜですか?

何かのようなもの

Regex.Replace(source, @"(\r\n)+", "\r\n");

また

Regex.Replace(source, @"\n+", "\n");

正規表現クラス

Regex.Replace メソッド (文字列、文字列)

于 2012-08-13T04:36:17.753 に答える