我将多个文本保存在一个 App_GlobalResources.resx
文件中。
这些文本需要跨多行,并且我需要它们包含换行符。然而,当我读取这些内容时,所有的换行符都消失了(打印出的是 \r\n
而不是 CRLF 10 13
控制字符)。
我知道,我可以通过重新替换 \r\n
(或者其他任何字符)回到 CRLF 来解决这个问题,但我想知道为什么这些明显针对文本的 resx 文件会忽略控制字符——而 CRLF 是相当重要的——是否有任何设置或其他方法可以使它自然地工作。
我将多个文本保存在一个 App_GlobalResources.resx
文件中。
这些文本需要跨多行,并且我需要它们包含换行符。然而,当我读取这些内容时,所有的换行符都消失了(打印出的是 \r\n
而不是 CRLF 10 13
控制字符)。
我知道,我可以通过重新替换 \r\n
(或者其他任何字符)回到 CRLF 来解决这个问题,但我想知道为什么这些明显针对文本的 resx 文件会忽略控制字符——而 CRLF 是相当重要的——是否有任何设置或其他方法可以使它自然地工作。
我使用了VB.NET Express Edition来测试这个。
在资源编辑器中(您可以在其中指定资源的名称和字符串内容),将字符串内容用Shift+Enter分隔。
假设您想要输入
hello
world
键入“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>
使用 Shift+Enter 插入新行。
如果您实际在resx文件中输入文本,则可以使用如下快捷键:
Shift+Enter
正如其他答案所提到的。
如果您要将文本粘贴到resx中,Visual Studio会以相同的格式粘贴文本(包括换行符/多行)。
(使用查找和替换定位resx文件..当您从“查找结果”面板中单击该文件时,VS将以XML格式打开resx文件)
在这里,您可以根据需要添加文本(在value标签中),并且格式将得以保留。
在我的情况下有效的解决方法是使用如下的 <br>
标签:
A text with a line break <br> and this goes in the second line.
这里有更多信息的帖子:在resx资源文件中添加换行符
如果您正在使用ASP.NET MVC的Razor视图引擎,则需要使用:
@Html.Raw(ResourceFile.ResourceString)
所以它以HTML格式打印<br>
。
<br/>
请注意在关闭标签之前添加斜杠,以使其符合XML规范(因为所有XML标记都需要一个关闭标签)。 - Arno 2501*.resx
文件并添加换行符。<value>
标记内的文本。要换行,只需按Enter
。注意:请删除换行符后面的前导空格。否则它们也会被插入。 <data name="MY_TEXT" xml:space="preserve">
<value>Line 1
Line 2
Line 3</value>
</data>
\t
制表符的方法时发现了这个答案。我必须进入Visual Studio的XML文件选项卡设置中关闭“将制表符替换为空格”的选项(它会用若干个空格来代替制表符),这样我才能够在我的字符串中插入一个真正的制表符字符。 - Jon O