У меня есть два текстовых поля, в которых пользователь вводит свой путь к текстовым файлам для сравнения. Когда они вводят путь, я делаю следующее, чтобы получить все содержимое каждого файла, читая построчно и, наконец, сохраняя их в строках. Пока это работает, но мне нужно взять первые 10 символов из файла2 и посмотреть, существуют ли эти 10 символов в файле1, если существует, затем увеличить счетчик, в противном случае перейти к следующим 10 символам из файла2 и сравнить их в файле1. Это должно продолжаться до конца файла2.
private void btnCompare_Click(object sender, EventArgs e)
{
string FilePath1 = txtFile1.Text;
string FilePath2 = txtFile2.Text;
string CompleteStringToCompare = "";
string CompleteStringToCompareWith = "";
int counter = 0;
//Read First file
if (!File.Exists(FilePath1))
{
Console.WriteLine("{0} does not exist.", FilePath1);
return;
}
using (StreamReader sr1 = File.OpenText(FilePath1))
{
string input1;
while ((input1 = sr1.ReadLine()) != null)
{
CompleteStringToCompare += input1;
}
}
//Read Second file
if (!File.Exists(FilePath2))
{
Console.WriteLine("{0} does not exist.", FilePath2);
return;
}
using (StreamReader sr2 = File.OpenText(FilePath2))
{
string input2;
while ((input2 = sr2.ReadLine()) != null)
{
CompleteStringToCompareWith += input2;
}
}
Не берите в голову, я написал остальную часть кода, что мне нужно. Вот оно:
int length = int.Parse(txtNumberOfChar.Text); //Which is 10 in my case
int j = 1;
string temp = "";
if (CompleteStringToCompareWith != "")
{
int totalSubStrings = CompleteStringToCompareWith.Length / length;
for (int i = 1; i <= totalSubStrings; i++)
{
if (i == totalSubStrings)
temp = CompleteStringToCompareWith.Substring(j, CompleteStringToCompareWith.Length - j);
else
temp = CompleteStringToCompareWith.Substring(j, length);
if (CompleteStringToCompare.Contains(temp))
counter++;
j = j + length;
}
lblMessage.Text = "Total Matches "+ counter;
}