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

346
01 ноября 2017, 00:36

Как-то спрашивал такой вопрос: убрать повторы строк из txt

Код оставляет уникальную строку. Но как быть если надо стереть все одинаковые строки, чтобы нигде не было повтора вообще?

пример такой(рандомно взял символы):

abcksg
p2haii
iuhjis
abcksg

СТАЛО ТАК:

p2haii
iuhjis

вроде бы понятно....

Answer 1
File.WriteAllLines(@"C:\Temp\some\out.txt",
    File.ReadAllLines(@"C:\Temp\some\in.txt")
    .GroupBy(l => l)
    .Where(g => g.Count() == 1)
    .Select(g => g.Key));

Этот код вычитывает все строки, потом группирует, используя в качестве ключа саму строку (т.е. складывает одинаковые строки в кучки), потом выбирает те группы, в которых ровно одна строка. Выбирает из групп ключи группы (т.е. строки), и пишет их в файл. Порядок совпадает с порядком в первоначальной последовательности т.к. в GroupBy порядок групп соответвует порядку встречаемости первого элемента группы во входной последовательности.

Answer 2

Если я Вас правильно понял, то вот такой способ имеет право на жизнь

Dictionary<string, int> dict = new Dictionary<string, int>();
// читаем данные из файла и пишем их в словарь
using (StreamReader file = new StreamReader("file.txt")) // откуда читаем
{
    while(!file.EndOfStream)
    {
        string temp = file.ReadLine();
        try
        {
            dict.Add(temp, 1);
        }
        catch (ArgumentException)
        {
            dict[temp]++;
        }
    }
}
using (StreamWriter file = new StreamWriter("file.txt")) // куда пишем
{
    foreach (string key in dict.Keys)
    {
        if (dict[key] == 1)
            file.WriteLine(key);
    }
}

Топорно очень, но работать будет.

READ ALSO
Проблема с разделением строки C#

Проблема с разделением строки C#

Имеется программа, которая открывает файл Settingsini, расшифровывает содержимое, заносит в таблицу данные, и зашифровывает файл обратно

300
Десериализация сложного JSON объекта C#

Десериализация сложного JSON объекта C#

Имеется сложный, не стандартный JSON объект:

313
Selenium | NoSuchWindowException

Selenium | NoSuchWindowException

Как можно обойти исключение NoSuchWindowException в Selenium ?

302
Изменение объектов GUI через SynchronizationContext

Изменение объектов GUI через SynchronizationContext

Почему возможно изменить объекты формы (свойства объектов: buttonCaption = "") только через SynchronizationContext (т

255