我要在一个App_GlobalResources.resx
文件中保留几个文本。
文本必须为多行,并且我需要包含换行符。但是,当我阅读内容时,所有换行符都消失了(\r\n
被打印,而不是作为CRLF 10 13
控制字符)。
我知道我可以在\r\n
阅读内容时通过将其替换为CRLF(或其他任何方式)来解决此问题,但我想知道为什么这些以文本为目标的resx文件忽略控制字符-CRLF非常重要-是否有人知道是否有某种设置或可以使之正常运行的功能。
Answers:
我使用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>
好吧,在我的情况下起作用的是使用这样的<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格式输出。
可以*.resx
使用文本编辑器编辑文件以添加换行符。
您甚至可以在Visual Studio中执行此操作:
Open with ...
XML (Text) Editor with Encoding
OK
OK
再次单击以选择编码(自动检测)<value>
标签内的文本。对于换行,只需按一下即可Enter
。注意:换行后请删除前导空格。否则,它们也会被插入。已在Visual Studio 2017中测试。
例:
<data name="MY_TEXT" xml:space="preserve">
<value>Line 1
Line 2
Line 3</value>
</data>
\t
标签的方法。我实际上必须进入xml文件中制表符的Visual Studio设置,然后关闭“制表符作为空格”选项(该选项将制表符替换为多个空格),这样才能在字符串中使用文字制表符。