C # строка - создание неэкранированной обратной косой черты - PullRequest
4 голосов
/ 18 января 2012

Я использую код .NET (C #) для записи в базу данных, которая взаимодействует с приложением Perl.Когда в строке появляется одинарная кавычка, мне нужно ее «убежать».IOW, имя O'Bannon должно быть преобразовано в O\'Bannon для базы данных UPDATE.Тем не менее, все попытки манипуляции со строками (например, .Replace) генерируют escape-символ для обратной косой черты, и я получаю O\\'Bannon.

Я знаю, что на самом деле генерируется вторая обратная косая черта, потому что я могу прочитать полученный результатЗначение поля базы данных (т. е. это не просто значение отладки IDE для строки).

Как получить только одну обратную косую черту в выходной строке?

R

Ответы [ 4 ]

5 голосов
/ 18 января 2012

Ну, я сделал

"O'Bannon".Replace("'","\\'")

и результат

"O\'Bannon"

Это то, что вы хотите?

2 голосов
/ 18 января 2012

Вы можете использовать "\\", который является escape-символом, сопровождаемым обратной косой чертой.

См. Список последовательностей Escape здесь: http://msdn.microsoft.com/en-us/library/h21280bw.aspx

1 голос
/ 19 января 2012

Вы также можете использовать дословную строку

s = s.Replace("'", @"\'");
1 голос
/ 18 января 2012

еще лучше назначить переменную для замены, чтобы при необходимости ее можно было проверить

var RepName = "O'Bannon";
var Repstr = RepName.Replace("'","\\'");
...