Почему я получаю литерал \ r и \ n при получении текста из базы данных с использованием C #? - PullRequest
3 голосов
/ 06 августа 2010

В поле базы данных я храню и возвращаю «тело» моего электронного письма (в случае его изменения). В этом у меня есть символы \ n \ r, чтобы получить новые строки. Но, похоже, не работает. Есть мысли:

Итак, данные в поле:

'TBD.\r\n\nExpect'

И мой вывод выглядит так (буквально \ r и \ n):

TBD.\r\n\nExpect

Мысли

Ответы [ 4 ]

12 голосов
/ 06 августа 2010

Escape-последовательности не имеют смысла в реальных строковых объектах - только когда синтаксический анализатор / компилятор C # их интерпретирует. Вы хотите сохранить новую строку в поле базы данных, а не 4 символа "\ r \ n".

3 голосов
/ 06 августа 2010

Вероятно, что \ r \ n экранирован, поэтому фактически возвращаемая строка будет эквивалентна строке

myString = "\\r\\n";

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

Хотя, скорее всего, это не связано с вашей проблемой, дополнительные \n, которые у вас есть, могут вызвать проблемы с просмотром в зависимости от системы, редактора и т. д.замените все вхождения \\ n \\ r и т. д., используя:

replacedString = myString.Replace("\\r\\n", "\r\n");

Это должно помочь решить вашу проблему.

2 голосов
/ 06 августа 2010

Потому что \r, \n и т. Д. Работает только внутри строки в вашем коде C #.Если вы читаете строку из файла, базы данных или других вещей, они просто получают дословные значения ...

1 голос
/ 06 августа 2010

Замените ваш \r\n на System.Environment.NewLine, так как ниже может работать для вас:

text.Replace("\r\n",  System.Environment.NewLine);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...