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

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

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

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

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

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

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

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

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

Думаю, здесь где-то есть опечатка. Я могу приблизительно понять, о чем вы спрашиваете, по контексту, но это: «используйте string.replace, чтобы превратить \ в \ - похоже, это не работает». не имеет никакого смысла, так как похоже, что вы хотите превратить одиночные обратные косые черты в одиночные обратные косые черты.

recursive 11.12.2008 01:35

извините, это должно было быть 2 обратных косых черты в 1 обратную косую черту

LoveMeSomeCode 11.12.2008 19:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
2
17 179
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

s.Replace("\\n", "\n");
s.Replace("\\t", "\t");
etc

Когда я попробовал это (программа C#), мне пришлось использовать "s = s.Replace (" \\ n "," \ n ");".

David Thornley 03.11.2009 01:26

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

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

Если вы используете редактор resx с графическим интерфейсом пользователя, удерживая нажатой клавишу SHIFT и одновременно нажимая клавишу ВВОД, вы получите разрыв строки.

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

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

га. codelogic - парень. он отправил ответ, который я пометил как правильный. Примерно 20 строк над этим комментарием.

LoveMeSomeCode 16.03.2012 18:12

О ... ха-ха. Не читал имена пользователей: D Думал, что это какой-то модный сайт.

mpen 16.03.2012 19:29

На самом деле я просто пытался на это ухватиться, но это занято. И даже не настоящий сайт, тупые доменные браконьеры.

LoveMeSomeCode 16.03.2012 20:13

Другие вопросы по теме