Как удалить пустые строки из отформатированной строки?
Как удалить пустые строки в строке в 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 соответствует$
между\r
и\n
, Как ни странно).
@Tim Pietzcker-не работает на меня. Я должен немного измениться, но ТХ!
Ehhh C# Регулярное Выражение.. Я должен был изменить его снова, но это работает хорошо:private string RemoveEmptyLines(string lines) { return Regex.Replace(lines, @"^\s*$\n|\r", string.Empty, RegexOptions.Multiline).TrimEnd(); }
Пример: http://regex101.com/r/vE5mP1/2
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