Ваш код фактически ищет 'se\\">'
. При поиске строк, включая обратную косую черту, обычно проще использовать дословные строки:
str.IndexOf(@"se\"">")
В этом случае у вас также есть кавычка в строке поиска, так что еще есть какой-то выход, но мне лично легче читать.
Обновление : мой ответ основывался на редактировании, в результате которого в вызове IndexOf
появились дополнительные косые черты в параметре. Исходя из текущей версии, я бы сделал ставку на str
, просто не содержащую ожидаемой последовательности символов.
Обновление 2 :
Основываясь на комментариях к этому ответу, кажется, что существует некоторая путаница относительно роли символа «\» в строках. При проверке строки в отладчике Visual Studio она будет отображаться с экранирующими символами.
Итак, если у вас есть текстовое поле и введите «c: \», проверка свойства Text в отладчике покажет «c: \\». Добавлена дополнительная обратная косая черта для экранирования. Фактическим содержимым строки по-прежнему является «c: \» (что можно проверить, проверив свойство Length
строки; это будет 3, а не 4).
Если мы возьмем следующую строку (взято из комментария ниже)
"' а
ночной свет
<таблица
ширина = \ "100% \">
<тд
класс = \ "вправо \"> Ингрид ') "
... последовательности \"
- это просто экранированные кавычки; обратные косые черты не являются частью содержимого строки. Итак, вы на самом деле ищете 'se">'
, а не 'se\">'
. Любой из них будет работать:
str.IndexOf(@"se"">"); // verbatim string; escape quotation mark by doubling it
str.IndexOf("se\">"); // regular string; escape quotation mark using backslash