Удалить из файла абзац с номером - C#
Формулировка задачи:
Дано целое число K и текстовый файл. Удалить из файла абзац с номером K
(абзацы выделяются с помощью красной строки— т.е. абзац начинается с 5
пробелов). Пустые строки между абзацами не учитывать и не удалять. Если абзац с
данным номером отсутствует, то оставить файл без изменений.
Решение задачи: «Удалить из файла абзац с номером»
textual
Листинг программы
class Program
{
const int ParagraphStartCount = 5;
static void Main(string[] args)
{
var fileName = @"E:\Документы\Text.txt";
File.WriteAllLines(fileName, new string[] {
" Абзац 1",
"Текст абзаца 1",
"",
" Абазац 2",
"Тест абзаца 2",
"",
" Абазац 3",
"Текст абзаца 3",
});
var lines = File.ReadAllLines(fileName).ToList();
var k = 1;
var paragraphStart = new String(' ', ParagraphStartCount);
var list = DeleteParagraph(lines, k, paragraphStart);
File.WriteAllLines(fileName, list);
Console.WriteLine(String.Join("\r\n", File.ReadAllLines(fileName)));
Console.ReadKey();
}
private static IEnumerable<string> DeleteParagraph(List<string> lines, int k, string paragraphStart)
{
var flag = false;
var pk = -1;
return lines.Where(x =>
{
if (x.StartsWith(paragraphStart))
{
pk++;
if (pk == k) flag = true;
else if (pk == k + 1)
{
flag = false;
}
}
return !flag;
}
);
}
}