Не могу правильно поставить условие
for (int i = 0; i < file1.Count; i++)
{
for (int j = 0; j < file2.Count; j++)
{
// Удаленные строки показываются красным цветом, добавленные - желтым, неизмененные - зеленым.
if (file1[i] == file2[j])// НЕ измененая строка - зеленая
{
ListViewItem li = new ListViewItem();
li.ForeColor = Color.Green;
li.Text = file1[i];
listView1.Items.Add(li);
break;
}
if (file1[i] != file2[j]) // Удаленные строки показываются красным цветом,
{
ListViewItem li = new ListViewItem();
li.ForeColor = Color.Red;
li.Text = file1[i];
listView1.Items.Add(li);
break;
}
//else if ...// добавленные - желтым,
}
}
Удаленные строки показываются красным цветом, добавленные - желтым, неизмененные - зеленым.
У меня 2 списка
List
Я ставлю условие что в file найдена строка как и file2 то зеленым, если нет такой то красным ВОТ только цвет изменяется на первой строчке далее идет все красное, а про измененные даже не знаю
Весь код программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AnalyzerTwoTextFiles
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List
private List
Пример как должен выглядеть результат рабочий программы
Ссылка на проект - https://github.com/wargerun/AnalyzerTwoTextFiles/
Ответ
Первый файл (образец)
Первая строка.
Вторая строка.
Третья строка.
Второй файл
Первая строка.
3-я строка.
Еще одна строка.
Получилось так
Код такой
///
public string Text { get; set; }
public LineType Type { get; set; }
public override string ToString()
{
return $"{Text} : {Type}";
}
}
///
public int GetHashCode(Line obj)
{
return obj.Text.GetHashCode();
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("ConsoleAppLinesComparison");
Console.WriteLine();
var originFile = @"D:\fileOrigin.txt";
var otherFile = @"D:\fileOther.txt";
List
List
PrintLines(resultLines);
Console.ReadKey();
}
///
try
{
foreach (var line in File.ReadAllLines(file))
{
result.Add(new Line { Text = line });
}
}
catch (Exception ex)
{
Console.WriteLine($"Чтение {file} c ошибкой: {ex.Message}");
}
return result;
}
///
//все строки которых нет в оригинальном файле
var exceptOtherLines = otherLines.Except(originLines, new LineComparer());
foreach (var line in exceptOtherLines)
{
line.Type = Line.LineType.Added;
}
//объединенная последовательность (без повторений)
var unionLines = originLines.Union(otherLines, new LineComparer());
return unionLines.ToList();
}
private static void PrintLines(List
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(new string('=', 20));
Console.WriteLine();
foreach (var line in resultLines)
{
if (line.Type == Line.LineType.Unchanged)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(line.Text);
}
else if (line.Type == Line.LineType.Added)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(line.Text);
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(line.Text);
}
Console.ForegroundColor = ConsoleColor.White;
}
}
}
Комментариев нет:
Отправить комментарий