Как удалить пустые строки из форматированной строки?

Как удалить пустые строки в строку в C#? Я генерирую некоторые текстовые файлы в C# (winforms), и по какой-то причине есть некоторые пустые строки. Как я могу удалить их после генерации строки (используя StringBuilder и TextWrite).

пример текстового файла:

THIS IS A LINE



THIS IS ANOTHER LINE AFTER SOME EMPTY LINES!

спасибо.

8 ответов


если вы хотите удалить строки, содержащие только пробелы, используйте

resultString = Regex.Replace(subjectString, @"^\s+$[\r\n]*", string.Empty, RegexOptions.Multiline);

^\s+$ удалит все от первой пустой строки до последней (в непрерывном блоке пустых строк), включая строки, содержащие только вкладки или пробелы.

[\r\n]* затем удалит последний CRLF (или просто LF, что важно, потому что движок .NET regex соответствует $ между \r и \n, как ни странно).


@Тим Pietzcker - не работает для меня. Я должен немного измениться, но thx!
Эххх В C# Регулярное Выражение.. Мне пришлось изменить его снова, но это работает хорошо:

private string RemoveEmptyLines(string lines)
{
  return Regex.Replace(lines, @"^\s*$\n|\r", string.Empty, RegexOptions.Multiline).TrimEnd();
}

пример: http://regex101.com/r/vE5mP1/2


можно попробовать String.Replace("\n\n", "\n");


попробуй такое

Regex.Replace(subjectString, @"^\r?\n?$", "", RegexOptions.Multiline);

    private string remove_space(string st)
    {
        String final = "";

        char[] b = new char[] { '\r', '\n' };
        String[] lines = st.Split(b, StringSplitOptions.RemoveEmptyEntries);
        foreach (String s in lines)
        {
            if (!String.IsNullOrWhiteSpace(s))
            {
                final += s;
                final += Environment.NewLine;
            }
        }

        return final;

    }

Если вы похожи на меня, и ни одна из вышеперечисленных строк не работала для вас, то я искал функцию, которая может сказать вам, пуста ли строка (и если это так, вы можете уничтожить или удалить ее, как я)

// if string "myText" is empty then
if (string.IsNullOrEmpty("myText")){
//delete/disable string
}

этот шаблон идеально подходит для удаления пустых строк и строк с пробелами и/или знаками табуляции.

s = Regex.Replace(s, "^\s*(\r\n|\Z)", "", RegexOptions.Multiline)

Я нашел простой ответ на эту проблему

YourradTextBox.Lines = YourradTextBox.Lines.Where(p => p.Length > 0).ToArray();

адаптировано из Marco Minerva [MCPD] по адресу: https://social.msdn.microsoft.com/Forums/windows/en-US/b1bb4107-4ad5-4cd3-bd20-9c2b3f9b31a6/delete-lines-from-multiline-textbox-if-its-contain-certain-string-c?forum=winforms&prof=required