С# подстрока не найдена, хотя подстрока существует

У меня есть строки, которые выглядят как

string1 = "~01301~^~ДАННЫЕ1,ДАННЫЕ2 ДАННЫЕ3~^15,87^717^0,85^81,11^2,11^0,06^0"

string2 = "~01341~^~ДАННЫЕ3,ДАННЫЕ2 ДАННЫЕ1 ДАННЫЕ4~^15,87^717^0,85^81,11^2,11^0,06^0"

string3 = "~01347~^~ДАННЫЕ1 ДАННЫЕ2,ДАННЫЕ3~^15,87^717^0,85^81,11^2,11^0,06^0"

и так далее.

Из этих строк мне нужно найти, какие строки содержат, скажем, подстроку «DATA1». В C# методы contains - indexOf - lastIndexOf не могут найти DATA1 в строке1, но все они находят DATA1 в строке2 и строке3.

Что может быть причиной этого? Сначала DATA1 окружен тильдой и запятой, но я думаю, что это не должно влиять, или я ошибаюсь?

РЕДАКТИРОВАТЬ: соответствующая часть кода тривиальна, поэтому я ее не публиковал. Но все же вот соответствующая часть кода:

while((line = isoFileReader.ReadLine())!=null)
{
    if (line.IndexOf(input)!=-1)
    {
        matchList.Add(line);
    }
}

or

while((line = isoFileReader.ReadLine())!=null)
{
    if (line.Contains(input))
    {
        matchList.Add(line);
    }
}

person mco    schedule 27.01.2012    source источник
comment
выложи свой код, иначе сложно сказать   -  person BrokenGlass    schedule 27.01.2012
comment
не могли бы вы показать точный код, который вы используете для этого lastIndexOf?   -  person DOK    schedule 27.01.2012
comment
Можете ли вы опубликовать точный код, который вы используете с String.Substring/IndexOf?   -  person Pete    schedule 27.01.2012
comment
Просмотрите string1 в отладчике, тщательно проанализируйте символы, и вы можете обнаружить некоторые скрытые символы, которые вы не могли увидеть.   -  person Stephen Quan    schedule 27.01.2012
comment
Только что проверил на себе, работает как положено. Ошибка должна быть где-то еще в вашем коде. Возможно, вам придется показать еще немного кода.   -  person DaveShaw    schedule 27.01.2012


Ответы (1)


Скорее всего проблема при звонке. строка1.Содержит("ДАННЫЕ1"); вернет true для указанной вами строки.

Содержит чувствителен к регистру, поэтому, возможно, вы случайно ввели неправильный регистр одной из букв или добавили пробел до/после.

person NominSim    schedule 27.01.2012
comment
Решено, спасибо за подсказку. входная строка имела пробел либо в конце, либо в начале. Обрезка ввода решена, мелкие ошибки так раздражают =) - person mco; 27.01.2012