Моя проблема в том, что я пытаюсь сравнить две строки: одна присутствует внутри файла (скажем, CS M 22+
), а другая - в имени файла (скажем, [email protected]
). Я должен проверить, соответствует ли строка, содержащаяся в имени файла, т.е. CS M 22+
, строке, присутствующей в имени файла, то есть [email protected]
.Сравнение двух строк в C#
Строка внутри файла CS M 22+
называется целевым именем и строкой, присутствующей в имени файла, является суффикс с названием рынка i.e. csm22 +, а затем название рынка westbengal @ v2.
Ниже приведена логика, в которой я сравниваю символ обеих строк. Но эта логика терпит неудачу, если во время тестирования я изменил свою внутреннюю строку файла на CS M 22
. Если я удалю любую вещь из внутренней файловой строки (CS M 22+), эта логика завершится неудачно.
Если оба соответствуют, то это нормально. Я пишу имя файла.
//For your reference
//splittedTGMKTName = [email protected]
//trimedTGMKTName = csm22+
// and the below logic fails if i remove anything from the trimedTGMKTName like if
// i remove "+" and the logic works fine if i added anything to the trimedTGMKTName and then compare
foreach (var chr in splittedTGMKTName.ToCharArray())
{
if (isContentLoopComplete)
{
if (lastChar == '-' || lastChar == '+' || chr == '-' || chr == '+')
{
isOldFile = true;
break;
}
}
for (int i = jpointer; i < trimedTGMKTName.ToCharArray().Length;)
{
if (trimedTGMKTName.Length - 1 == i)
{
isContentLoopComplete = true;
lastChar = chr;
}
if (chr != trimedTGMKTName[i])
{
isbreak = true;
}
jpointer++;
break;
}
if (isbreak)
break;
}
if (!isOldFile)
{
fileCount = ++fileCount;
hasErrors = true;
sw = new StreamWriter(folderPath + "/" + "Files_with_mismatch_TGMKT_Names_" + folder.Name + ".txt", true);
sw.WriteLine(fileName);
sw.Close();
}
Любая помощь будет оценена. Спасибо.
Использование string.contains – Pankaj
также не работает в моем случае – N2J