Не могу правильно поставить условие
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; } } }
Комментариев нет:
Отправить комментарий