замена строки на escape-символы

Сегодня я обнаружил, что размещение строк в файле ресурсов приведет к тому, что они будут рассматриваться как литералы, т. Е. Установка «Текст для первой строки \ n Текст для второй строки» приведет к тому, что сам символ экранирования будет экранирован, и поэтому то, что хранится, это ». Текст для первой строки \ n «Текст для второй строки» - и тогда они появляются на дисплее, а не мой перевод каретки и вкладки

Так что я хотел бы использовать string.replace, чтобы превратиться \\в \- это, похоже, не работает.

s.Replace ("\\\\", "\\"); 

не изменяет строку вообще, потому что строка думает, что есть только 1 обратный слеш

s.Replace ("\\", "");

заменяет все двойные кавычки и оставляет мне просто n вместо \ n

Кроме того, использование @вдвое меньше \символов или Regex.Replaceметод дают тот же результат

Кто-нибудь знает хороший способ сделать это без циклического прохождения символа за символом?

10.12.2008 22:17:08
Я думаю, что где-то здесь может быть опечатка. Я могу приблизительно выяснить, что вы спрашиваете по контексту, но это: «используйте string.replace, чтобы превратить \ в \ - это, похоже, не работает». не имеет никакого смысла, так как похоже, что вы хотите превратить одиночные обратные косые черты в одиночные.
recursive 10.12.2008 22:35:59
извините, это должно было быть 2 обратной косой черты в
LoveMeSomeCode 11.12.2008 16:50:13
3 ОТВЕТА
РЕШЕНИЕ

Поскольку \nна самом деле это один символ, вы не можете достичь этого, просто заменив обратную косую черту в строке. Вам нужно будет заменить каждую пару \и следующий символ экранированным символом, например:

s.Replace("\\n", "\n");
s.Replace("\\t", "\t");
etc
14
10.12.2008 22:20:50
Когда я попробовал это (программа C #), мне пришлось использовать "s = s.Replace (" \\ n "," \ n ");".
David Thornley 2.11.2009 22:26:17

Тебе лучше будет настроить сами файлы resx. Разрывы строк можно вводить с помощью двух механизмов: вы можете редактировать файл resx как XML (щелкните правой кнопкой мыши в обозревателе решений, выберите «Открыть как» и выберите XML) или вы можете сделать это в конструкторе.

Если вы делаете это в XML, просто нажмите Enter, нажмите клавишу Backspace в начале новой строки, которую вы создали, и все готово. Вы также можете сделать это с помощью функции поиска и замены, хотя это будет сложно.

Если вы используете редактор GUI resx, удерживая нажатой клавишу SHIFT при нажатии ENTER, вы получите разрыв строки.

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

8
10.12.2008 22:31:44

На самом деле я использую решение Джона и редактирую XML напрямую, поскольку это лучшее решение для проекта, но codelogic ответил на вопрос, который сводил меня с ума.

0
10.12.2008 23:03:15
га. Codelogic это парень. он отправил ответ, который я пометил правильно. Около 20 строк над этим комментарием.
LoveMeSomeCode 16.03.2012 14:12:10
Ох ... ха - ха. Не читал имена пользователей: D Думаю, это был какой-то модный сайт.
mpen 16.03.2012 15:29:27
На самом деле я просто пытался запрыгнуть на это, но это занято. Даже не настоящий сайт, тупые доменные браконьеры.
LoveMeSomeCode 16.03.2012 16:13:14