回车/换行.Net资源文件(App_GlobalResources)

Ale*_*lex 89 resx newline line-breaks resource-files

我在App_GlobalResources.resx文件中保留了几个文本.

文本必须是多行的,我需要让它们包含换行符.但是,当我读取内容时,所有换行都消失了(\r\n打印出来,而不是作为CRLF 10 13控制字符).

我知道\r\n当我阅读内容时,我可以通过重新替换(或其他任何事情)回到CRLF来解决这个问题,但我想知道为什么这些明显以文本为目标的resx文件会忽略控制字符 - 而且CRLF很重要 - 如果有人知道是否有设置或某些东西可以让它自然地工作.

sha*_*esh 151

我使用VB.NET Express Edition来测试这个.

在资源编辑器中(您可以在其中指定资源的名称和字符串内容),将字符串内容用Shift+ 分隔Enter.

让我们说你想输入

hello  
world
Run Code Online (Sandbox Code Playgroud)

输入"hello",然后输入Shift+ Enter和"world".

如果查看Resources.Resx文件(它是一个xml文件),您可以看到它创建了一个带有该属性的节点xml:space="preserve".

第二个选择

此外,您可以手动编辑Resources.resx并修改CDATA部分下的内容.

假设您有名为"example"的字符串.在Resources.resx中搜索它并更改内容以在其中包含CDATA部分,而不是具有简单值.

例如

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>
Run Code Online (Sandbox Code Playgroud)

  • 我找到了这个答案,寻找插入`\ t`标签的方法.我不得不实际进入visual studio的xml文件中的选项卡设置,并关闭"tabs as spaces"选项(它替换了带有多个空格的制表符),这样我就可以在字符串中得到一个文字制表符. (3认同)

小智 32

使用Shift+ Enter插入新行.

  • 谁会猜到.试过ctrl + enter,alt + enter.一致性MS! (4认同)

Dan*_*eld 18

使用resx设计器界面时

  • 如果您实际上是在resx文件中键入文本,那么您将使用

    Shift+Enter

    如其他答案所述.

  • 如果要在resx中粘贴文本 - Visual Studio将以与原来相同的格式粘贴文本(包括换行符/多行).

以XML格式打开resx文件时

(使用查找和替换找到resx文件..当您从'查找结果'面板中单击文件时,VS将以XML格式打开resx文件)

您可以在此处添加文本(在值标签中),并保留格式.


Len*_*rri 12

那么,在我的情况下有用的是使用这样的<br>标签:

A text with a line break <br> and this goes in the second line.
Run Code Online (Sandbox Code Playgroud)

这里有一篇帖子包含更多信息:在resx资源文件中添加换行符

如果您正在使用带有ASP.NET MVC的Razor视图引擎,则需要使用:

@Html.Raw(ResourceFile.ResourceString)
Run Code Online (Sandbox Code Playgroud)

以便它打印<br>为HTML.

  • 如果您的资源字符串要用作HTML,这将有效.但是,如果要以非HTML方式使用该字符串(例如,作为桌面应用程序中工具提示或错误消息对话框的字符串),您只需在字符串中获取<br>. (9认同)