Нормализует текстовый файл из ненормальных строк?

У меня есть несколько текстовых файлов, в которых есть много новых строк между текстами, которые я хотел бы нормализовать, но, к примеру, нет никакого количества новых строк между текстами:

Text




Some text








More text




More

more

Итак, что я хотел изменить, когда количество новой строки больше, чем X на Y, так скажем, когда есть 5 последовательных новых строк, оно становится 2, 10 становится 3.

Моя текущая проблема в том, что я не знаю, как мне поступить, чтобы определить, какие строки мне придется нормализовать.

Я знаю, что могу посчитать новые строки, используя split, и другими способами, такими как проверка, является ли строка пустой и т. Д. Но, возможно, есть простое регулярное выражение или лучший подход для решения этой проблемы?

2 ответа

Решение
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;
}

Вот один из способов

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");
Другие вопросы по тегам