2013-08-02 2 views
3

У меня здесь небольшая проблема. Im пытается заменить символ «с \»«Попытка заменить» буквами C#

Я попытался строки замените метод следующим образом:

1.

string test = "HISTOIRE D'O, CHAPITRE II"; 
test = test.Replace("'","\'"); 

Ничего не изменилось в тесте Струнный такое же, как заявил

2.

string test = "HISTOIRE D'O, CHAPITRE II"; 
test = test.Replace("'","\\'"); 

Это форматирует мои строки, как это «гисто IRE D \\ 'O, CHAPITRE II ";

Найдено ничего еще на Google и т.д.

Спасибо за любую помощь.

+3

Могу ли я спросить, почему вы делаете это? Если во избежание SQL-инъекции вы должны использовать параметризованный SQL. –

+0

Вы должны принять один из этих ответов. –

ответ

5

Ваш второй код верен.

Это Форматирует мою строку как «HISTOIRE D \ 'O, CHAPITRE II»;

Нет, это действительно так. Вот как выглядит в отладчике, но если вы сбросите его на консоль или что-то подобное, вы увидите, что есть только одна обратная косая черта.

В качестве альтернативы можно использовать дословный строковый литерал:

test = test.Replace("'", @"\'"); 
+0

справа, смотрел на отладчика, thx – gangfish

1

Вашего второй случай кажется правильным. Похоже, это только то, как выглядит дегубатор. Попробуйте написать на консоли, и вы увидите ожидаемый результат.

enter image description here

Вы можете использовать verbtaim string literal вместо;

string test = "HISTOIRE D'O, CHAPITRE II"; 
test = test.Replace("'", @"\'"); 
0

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

Если вы печатаете результат в окне консоли, вы должны увидеть, чего вы ожидаете.

0

Это должно сделать трюк:

string test = "HISTOIRE D'O, CHAPITRE II"; 
test = test.Replace("'", @"\'"); 
Смежные вопросы