【问题标题】:how to make string returned by ResourceManager.GetString not verbatim如何使 ResourceManager.GetString 返回的字符串不是逐字记录
【发布时间】:2014-02-10 04:12:35
【问题描述】:

好的,我有一个字符串

string textToShow = "this\nrocks"

在winforms窗口中放入标签时会显示

this
rocks

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

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

整个字符串将被视为逐字逐句,显示

this\nrocks

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

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

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

谢谢

【问题讨论】:

    标签: c# winforms escaping


    【解决方案1】:

    这里已经回答了:StackOverflow: How to deal with newline

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

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

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

    【讨论】:

    • 这就是我要找的。谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-22
        • 2012-09-25
        • 1970-01-01
        • 2012-12-19
        • 2018-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多