如何使ResourceManager.GetString返回的字符串不是逐字的

时间:2014-02-10 04:12:35

标签: c# winforms escaping

好的,我有一个字符串

string textToShow = "this\nrocks"

当在winforms窗口中放入标签时,将显示

this
rocks

我想得到的结果是什么。现在,我没有在代码中设置textToShow,而是在资源文件中设置它。当我尝试使用

从资源文件中获取值时
Properties.Resources.ResourceManager.GetString("textToShow");

整个字符串将被逐字对待,显示

this\nrocks

在winforms窗口中放入标签时。这不是我要找的结果。那么在资源文件中存储带有特殊字符的字符串的最佳方法是什么?我可以为每个特殊字符执行字符串替换,例如

string.Replace(@"\n", "\n");

但是每当我调用方法ResourceManager.GetString时我都需要替换每个特殊字符,我认为这不是最优雅的解决方案。如果有一些方法可以从方法ResourceManager.GetString返回的字符串不是逐字的,请告诉我。

由于

3 个答案:

答案 0 :(得分:1)

这已在这里得到解答:StackOverflow: How to deal with newline

基本上你有两个有用的选择:

在资源管理器文本编辑器中使用shift + enter添加新行。

或者在阅读时使用String.Format(){0}替换为\n

答案 1 :(得分:0)

在资源编辑器中输入“this< shift + enter > rocks”作为资源值。

答案 2 :(得分:0)

.Net 4.5框架具有unescape功能,如下所示:

using System.Text.RegularExpressions;
Regex.Unescape(Properties.Resources.ResourceManager.GetString("textToShow"));

解决您的问题。现在,您可以在资源文件中使用\n\u

相关问题