Повернення каретки / подача рядка у файлі ресурсу .Net (App_GlobalResources)


94

Я зберігаю кілька текстів у App_GlobalResources.resxфайлі.

Тексти повинні бути багаторядковими, і мені потрібно, щоб вони містили стрічкові стрічки. Однак, коли я читаю вміст, усі стрічки стрічок зникають ( \r\nдрукується, а не як CRLF 10 13контрольний символ).

Я знаю, що міг би обійти це шляхом повторної заміни \r\n(або чогось іншого з цього приводу) назад до CRLF, коли я читав вміст, але мені було цікаво, чому ці чітко орієнтовані на текст resx-файли ігнорують контрольні символи - і CRLF є начебто важливим - і якщо хтось знає, чи є параметр чи щось таке, що дозволило б це працювати природно.

Відповіді:


161

Я використовував VB.NET Express Edition, щоб перевірити це.

У редакторі ресурсів (де ви можете вказати назву ресурсу та вміст рядка) помістіть вміст рядка, розділений знаком Shift+ Enter.

Скажімо, ви хочете ввести текст

hello  
world

Введіть "привіт", після чого Shift+ Enterі "світ".

Якщо ви подивитесь на файл Resources.Resx (який є файлом xml), ви можете побачити, що він створює вузол з атрибутом xml:space="preserve".

2-й варіант

Крім того, ви можете редагувати Resources.resx вручну та змінити вміст у розділі CDATA.

Припустимо, у вас є рядок із назвою "приклад". Шукайте його в Resources.resx і змініть вміст, щоб у ньому був розділ CDATA, проти простого значення.

напр

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>

3
Я знайшов цю відповідь, шукаючи спосіб вставити \tвкладки. Мені фактично довелося зайти в налаштування Visual Studio для вкладок у файлах xml і вимкнути опцію "tabs as пробіли" (де замість цього символи табуляції замінюються на кількість пробілів), щоб я міг отримати буквальний символ табуляції у свій рядок.
Джон О,

Фантастично ... не знав, що це можливо! :)
Леніель Маккаферрі

Краще пізно, ніж ніколи ... Після того, як я припустив, \ n був правильним шляхом. Внести лише 50 змін!
Andez,

Врятував мені день. Дякую!!
xyzWty,


18

При використанні інтерфейсу дизайнера resx

  • Якщо ви насправді вводите текст у файл resx, тоді ви б використали

    Shift+Enter

    як зазначено в інших відповідях.

  • Якщо ви вставляєте текст у resx - Visual Studio вставить текст у тому ж форматі, що вже є (включаючи розриви рядків / багаторядкові рядки).

При відкритті файлу resx у форматі XML

(знайдіть файл resx за допомогою пошуку та заміни .. при натисканні файлу на панелі «знайти результати» VS відкриє файл resx у XML)

Тут ви можете додавати текст як завгодно (у теги значень), і форматування буде збережено.


17

Що ж, що працювало в моїй ситуації, було використання такого <br>тегу:

A text with a line break <br> and this goes in the second line.

Тут є допис із додатковою інформацією: Введення розриву рядка у файл ресурсу resx

Якщо ви випадково використовуєте механізм подання Razor з ASP.NET MVC, вам потрібно використовувати:

@Html.Raw(ResourceFile.ResourceString)

так що він друкує <br>як HTML.


10
Це буде працювати, якщо рядок вашого ресурсу призначений для використання як HTML. Але якщо рядок буде використовуватися не у форматі HTML (наприклад, як рядок для підказки чи діалогового вікна повідомлення про помилку в настільному додатку), ви просто отримаєте <br> у своєму рядку.
Пітер Мейер

0

Редагувати *.resxфайл можна за допомогою текстового редактора щоб додати розриви рядків.

Ви можете зробити це навіть у Visual Studio:

  • Клацніть правою кнопкою миші на файл ресурсу
  • Клацніть, щоб Open with ...
  • Виберіть XML (Text) Editor with Encoding
  • Клацніть OK
  • Клацніть OK ще раз для вибору кодування (автовизначення)
  • Шукайте назву (ключ) вашого тексту (наприклад, "MY_TEXT")
  • Відредагуйте текст всередині <value>тегу. Для розривів рядків просто натисніть Enter. Примітка: Видаліть пробіли після прориву рядка. В іншому випадку вони теж вставляються.

Перевірено на Visual Studio 2017.

Приклад:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.