Retorno de carro / salto de línea en el archivo de recursos .Net (App_GlobalResources)


94

Guardo varios textos en un App_GlobalResources.resxarchivo.

Los textos tienen que ser de varias líneas y necesito que contengan saltos de línea. Sin embargo, cuando leo el contenido, todos los avances de línea desaparecen ( \r\nse imprime, no como CRLF 10 13carácter de control).

Sé que podría solucionar esto reemplazando \r\n(o cualquier otra cosa) de nuevo a CRLF cuando leo el contenido, pero me preguntaba por qué estos archivos resx claramente dirigidos al texto ignoran los caracteres de control, y CRLF es algo importante - y si alguien sabe si hay un entorno o algo que permitiría que esto funcione de forma natural.

Respuestas:


160

Usé VB.NET Express Edition para probar esto.

En el editor de recursos (donde puede especificar el nombre del recurso y el contenido de la cadena) coloque el contenido de la cadena separado por Shift+ Enter.

Digamos que quieres escribir

hello  
world

Escribe "hola" seguido de Shift+ Entery "mundo".

Si observa el archivo Resources.Resx (que es un archivo xml), puede ver que crea un nodo con el atributo xml:space="preserve".

Segunda opción

Además, puede editar Resources.resx manualmente y modificar el contenido para que esté en la sección CDATA.

Suponga que tiene la cadena llamada "ejemplo". Búsquelo en Resources.resx y cambie el contenido para que tenga una sección CDATA en su interior en lugar de tener un valor simple.

p.ej

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

3
Encontré esta respuesta buscando una forma de insertar \tpestañas. Tuve que entrar en la configuración de Visual Studio para pestañas en archivos xml y desactivar la opción "pestañas como espacios" (donde reemplaza los caracteres de pestaña con una cantidad de espacios) para poder obtener un carácter de pestaña literal en mi cadena.
Jon O

Fantástico ... ¡no sabía que era posible! :)
Leniel Maccaferri

Más vale tarde que nunca ... Después de haber asumido \ n era la forma correcta. ¡Solo 50 cambios por hacer!
Andez

Salvó mi día. ¡¡Gracias!!
xyzWty

35

Use Shift+ Enterpara insertar una nueva línea.


4
quien lo hubiera adivinado. intenté ctrl + enter, alt + enter. consistencia MS!
Illuminati

18

Al usar la interfaz del diseñador resx

  • Si realmente está escribiendo el texto en el archivo resx, entonces usaría

    Shift+Enter

    como se indica en otras respuestas.

  • Si está pegando texto en el resx, Visual Studio pegará el texto en el mismo formato que ya tiene (incluidos saltos de línea / multilínea).

Al abrir el archivo resx en formato XML

(ubique el archivo resx usando buscar y reemplazar ... cuando haga clic en el archivo desde el panel 'buscar resultados', VS abrirá el archivo resx en XML)

Aquí puede agregar el texto que desee (en etiquetas de valor) y se conservará el formato.


17

Bueno, lo que funcionó en mi situación fue usar una <br>etiqueta como esta:

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

Hay una publicación con más información aquí: Poner un salto de línea en un archivo de recursos resx

Si está utilizando el motor de vista Razor con ASP.NET MVC, debe usar:

@Html.Raw(ResourceFile.ResourceString)

para que imprima <br>como HTML.


10
Esto funcionará si su cadena de recursos está destinada a usarse como HTML. Pero si la cadena se va a utilizar de una manera que no sea HTML (como la cadena para una información sobre herramientas o un cuadro de diálogo de mensaje de error en una aplicación de escritorio, por ejemplo), simplemente obtendrá <br> en su cadena.
Peter Meyer

0

Es posible editar el *.resxarchivo con un editor de texto para agregar saltos de línea.

Puede hacerlo incluso dentro de Visual Studio:

  • Haga clic derecho en el archivo de recursos
  • Haga clic para Open with ...
  • Seleccione XML (Text) Editor with Encoding
  • Hacer clic OK
  • Haga clic de OKnuevo para seleccionar la codificación (detección automática)
  • Busque el nombre (clave) de su texto (por ejemplo, "MY_TEXT")
  • Edite el texto dentro de la <value>etiqueta. Para saltos de línea, simplemente presione Enter. Nota: Elimine los espacios iniciales después del salto de línea. De lo contrario, también se insertan.

Probado con Visual Studio 2017.

Ejemplo:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.