2

正規化したいテキスト間に改行がたくさんあるテキストファイルがいくつかありますが、たとえば、テキスト間の改行の量にパターンはありません。

Text




Some text








More text




More

more

それで、改行の量がXよりも大きいところをYに変更したかったので、たとえば、5つの連続した改行があると2になり、10は3になります。

私の現在の問題は、どの行を正規化する必要があるかを特定する方法がわからないことです。

スプリットを使用して新しい行を数えることができることは知っていますが、行が空かどうかを確認するなどの他の方法もあります...しかし、おそらく、この問題を解決するための単純な正規表現またはより良いアプローチがありますか?

4

2 に答える 2

1
List<string> Normalize(string fileName, int size)
{
    List<string> result = new List<string>();
    int blanks = 0;

    foreach (var line in File.ReadAllLines(fileName))
    {
        if (line.Trim() == "")
        {
            if (blanks++ < size)
                result.Add("");
        }
        else
        {
            blanks = 0;
            results.Add(line);
        }
    }
    return line;
}
于 2012-05-13T13:32:25.447 に答える
0

ここに1つの方法があります

string sText = File.ReadAllText(@"c:\file.txt");
sText = removeLines(sText);

public string removeLines(string sData) {
            string[] sArray = sData.Split(sDelim, 
                                          StringSplitOptions.RemoveEmptyEntries);
            StringBuilder builder = new StringBuilder();
            foreach (string value in sArray)
            {
                builder.Append(value);
                builder.Append("\r\n");
            }
            return builder.ToString();
}

または、正規表現を使用したワンライナー:

string sText = File.ReadAllText(@"c:\file.txt");
sText = Regex.Replace(sText, "[\r\n]+", "\n");
于 2012-05-13T13:11:12.307 に答える