2016-04-13 2 views
0

Моя проблема в том, что я пытаюсь сравнить две строки: одна присутствует внутри файла (скажем, 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(); 
} 

Любая помощь будет оценена. Спасибо.

+1

Использование string.contains – Pankaj

+0

также не работает в моем случае – N2J

ответ

3

Вы можете использовать функцию StartsWith, если вы хотите проверить, если ваша функция в начале вызова одного: Пример:

string src="[email protected]"; 
src.StartsWith("csm22")// will return true 

если вы хотите проверить, если строка содержит другой, вы можете использовать Contains функция. за равенство вы можете использовать Equals.

+0

Обратите внимание, что когда вы добавляете параметр «StringComparison.OrdinalIgnoreCase», вы получаете нечувствительность к регистру (так что «CSM22 +» также будет соответствовать) –

Смежные вопросы