Удалить возврат каретки в текстовом файле - PullRequest
1 голос
/ 01 ноября 2019

Я создаю программу, которая использует текстовый файл, который выглядит следующим образом:

01/11 09:56,yeo,no,110222100,no
01/11 09:55,Test,Test2,110222100,Test2
01/11 09:52,Jack,Jean,112222100,Jean
31/10 23:17,Rayane,Jean,111220000,Rayane

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

for (int i = 0; i < lignes.Count; i++)
{
    string ligne = lignes[i];
    List<string> element = ligne.Split(',').ToList();

    if (element.Contains(selectionDate[1])) //Ici on à les éléments de la ligne séléctionner
    {
        string ligneAr = null;
        lignes[i] = ligneAr;
        File.WriteAllLines(path, lignes);
    }
}

Но когда я использую этот код, это происходит в текстовом файле:

01/11 09:56,yeo,no,110222100,no
01/11 09:55,Test,Test2,110222100,Test2
01/11 09:52,Jack,Jean,112222100,Jean
31/10 23:17,Rayane,Jean,111220000,Rayane
// Empty line
31/10 22:30,Rayane,André,122120101,Rayane

Вместо этого в тексте есть дыра. Как я могу удалить эту дыру? Код, который позволяет вам создать его, находится в if ()

Спасибо.

1 Ответ

3 голосов
/ 01 ноября 2019

Отверстие, которое вы упомянули в своем вопросе, добавлено из-за назначения null для lignes[i], т. Е. lignes[i] = ligneAr;. File.WriteAllLines() внутри цикла for, это также неправильное место для обновления вашего файла.

Нет необходимости разбивать строку lignes[i], вы можете просто использовать предложение .Where() с необходимым условием, чтобы получить отфильтрованный результат и записать его в файл.

Что-то вроде,

var result = lignes.Where(ligne => !ligne.Contains(selectionDate[1]));
File.WriteAllLines(path, result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...