Дан файл test.txt, в нем записаны строки:
epS3A
epS3A
epS3A
epS3A
bMkWY
bMkWY
bMkWY
bMkWY
На примере видно, что строки одинаковые, но нужно "не" показать все строки, а показать только одну из повторений, вывод на экран должен быть таким:
epS3A
bMkWY
Как это сделать, не знаю(
Distinct, не нужно их удалять, надо показать их на экране
пробовал считать и сравнивать как массив, но эффекта никакого, все равно все подряд показывает.
Цитата: -Покажите вашу попытку с массивом
var repeated_string = 1;
string[] file1 = File.ReadAllLines(@"C:\Users\Doe\Desktop\test.txt");
for (int i = 0; i < file1.Length; i++)
{
if (file1[i] == file1[i])
{
Console.WriteLine(file1[i] + " " + file1[i]);
}
}
Console.ReadKey();
Я бы сделал так:
string last = null;
foreach (var line in File.ReadLines(filename))
if (line != last)
Console.WriteLine(last = line);
А вообще, в коде из вопроса ошибка тут:
if (file1[i] == file1[i])
Должно быть так:
if (i != 0 && files[i-1] != files[i])
Ну и выводить надо саму строку.
PS: Оба варианта работают только для подряд идущих одинаковых строк.
Вот рабочий пример решения задачи используя HashSet. Из вопроса не понятно, нужно ли выводить неповторяющиеся только подряд идущие строки или глобально уникальные среди всех строк, моё решение для второго случая. Это один из самых быстрых возможных вариантов решения для глобальной уникальности строк, конечно если файл не слишком большой и его уникальные строки могут вместиться в память. (запустить решение онлайн)
using System.Collections.Generic;
public class MainClass {
public static void Main() {
string[] strs = {"ab", "bc", "ab", "ab", "bc"};
HashSet<string> set = new HashSet<string>();
for (int i = 0; i < strs.Length; ++i) {
if (!set.Contains(strs[i])) {
System.Console.WriteLine(strs[i]);
set.Add(strs[i]);
}
}
}
}
Второе более короткое решение для того же случая глобальной уникальности строк можно сделать через Distinct метод. (запустить решение онлайн)
using System.Linq;
public class MainClass {
public static void Main() {
string[] strs = {"ab", "bc", "ab", "ab", "bc"};
foreach (string s in strs.Distinct()) {
System.Console.WriteLine(s);
}
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей