Carriage Return / Line Feed in .Net Resource File (App_GlobalResources)

94

Estou mantendo vários textos em um App_GlobalResources.resxarquivo.

Os textos devem ser multilinhas e preciso que contenham alimentações de linha. No entanto, quando leio o conteúdo, todas as alimentações de linha desaparecem ( \r\né impresso, não como CRLF 10 13caractere de controle).

Eu sei que eu poderia contornar isso substituindo \r\n(ou qualquer outra coisa) de volta para CRLF quando eu ler o conteúdo, mas eu me perguntei por que esses arquivos resx claramente direcionados a texto ignoram caracteres de controle - e CRLF é importante - e se alguém souber se existe uma configuração ou algo que permita que isso funcione naturalmente.

Alex
fonte

Respostas:

159

Usei o VB.NET Express Edition para testar isso.

No editor de recursos (onde você pode especificar o nome do recurso e o conteúdo da string), coloque o conteúdo da string separado por Shift+ Enter.

Digamos que você queira digitar

hello  
world

Digite "hello" seguido de Shift+ Entere "world".

Se você olhar o arquivo Resources.Resx (que é um arquivo xml), verá que ele cria um nó com o atributo xml:space="preserve".

2ª opção

Além disso, você pode editar o Resources.resx manualmente e modificar o conteúdo para estar na seção CDATA.

Suponha que você tenha a string chamada "exemplo". Pesquise em Resources.resx e altere o conteúdo para ter a seção CDATA dentro dele, em vez de ter um valor simples.

por exemplo

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>
Shahkalpesh
fonte
3
Eu encontrei esta resposta procurando uma maneira de inserir \tguias. Eu tive que ir para as configurações do Visual Studio para tabulações em arquivos xml e desligar a opção "tabulações como espaços" (onde substitui caracteres de tabulação por vários espaços) para que eu pudesse inserir um caractere de tabulação literal em minha string.
Jon O de
Fantástico ... não sabia que era possível! :)
Leniel Maccaferri
Mais vale tarde do que nunca ... Depois de presumir que \ n era o caminho correto. Apenas 50 alterações para fazer!
Andez,
Salvou meu dia. Obrigado!!
xyzWty
35

Use Shift+ Enterpara inserir uma nova linha.

azulado
fonte
4
quem teria adivinhado. tentei ctrl + enter, alt + enter. consistência MS!
Illuminati de
18

Ao usar a interface de designer resx

  • Se você estiver realmente digitando o texto no arquivo resx, você deve usar

    Shift+Enter

    conforme observado em outras respostas.

  • Se você estiver colando texto no resx - o Visual Studio colará o texto no mesmo formato que já está (incluindo quebras de linha / multilinha).

Ao abrir o arquivo resx em formato XML

(localize o arquivo resx usando localizar e substituir .. quando você clica no arquivo no painel 'localizar resultados', o VS abrirá o arquivo resx em XML)

Aqui você pode adicionar texto como quiser (em tags de valor) e a formatação será preservada.

Danield
fonte
17

Bem, o que funcionou na minha situação foi usar uma <br>tag como esta:

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

Há uma postagem com mais informações aqui: Colocando uma quebra de linha em um arquivo de recurso resx

Se você estiver usando o mecanismo de visualização Razor com ASP.NET MVC, você precisa usar:

@Html.Raw(ResourceFile.ResourceString)

para que imprima o <br>como HTML.

Leniel Maccaferri
fonte
10
Isso funcionará se sua string de recurso for destinada ao uso como HTML. Mas se a string for usada de uma maneira não HTML (como a string para uma dica de ferramenta ou caixa de diálogo de mensagem de erro em um aplicativo de desktop, por exemplo), você apenas obterá <br> em sua string.
Peter Meyer
0

É possível editar o *.resxarquivo com um editor de texto para adicionar quebras de linha.

Você pode fazer isso até mesmo no Visual Studio:

  • Clique com o botão direito no arquivo de recurso
  • Clique para Open with ...
  • Selecione XML (Text) Editor with Encoding
  • Clique OK
  • Clique OKnovamente para selecionar a codificação (detecção automática)
  • Pesquise o nome (chave) do seu texto (por exemplo, "MY_TEXT")
  • Edite o texto dentro da <value>tag. Para quebras de linha, basta apertar Enter. Nota: Remova os espaços iniciais após a quebra de linha. Caso contrário, eles também serão inseridos.

Testado com Visual Studio 2017.

Exemplo:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Beleza
fonte