c# - 如何处理资源 (.resx) 文件中的字符串文字

标签 c# winforms resources resx string-literals

所有,我最近学习了很多有关本地化和资源文件 (.resx) 的使用。对于特定代码,我有一个 .resx(和相关的本地化版本 .de-DE.resx 等)用于每个 WinForm,两个用于代码(一个用于对象字符串 [列名等],一个用于用户消息 [显示在消息框等中的那些])。对于对象字符串我没有任何问题,但是对于消息我有以下问题......

以消息“搜索“SomeString”(3 个文件中的 23 个匹配项)”为例,消息开头的制表符空格在哪里。要创建这样的消息,我使用类似

的代码
String.Format("\tSearch \"{0}\" ({1} hits in {2} files)\n",
              strSearchString,
              nTotalHits,
              nNumberOfFiles);

现在的问题是,当我在资源文件中包含字符串 "\tSearch\"{0}\"({1} hits in {2} files)\n" 时运行时输出如下

\tSearch \"SomeString\" (23 hits in 3 files)\n

很明显,它没有像 C# 本身那样处理字符串文字。我知道要在资源​​文件中创建新行,我必须使用 Shift + Return,但是您对制表符等做了什么?请不要说复制到 Word 或 Notepad++ 并添加选项卡,之后再复制回来,否则我会戳到自己的眼睛。

将资源文件中包含的字符串文字转换为可由 C# 正确解释的实际字符串文字的最佳方法是什么?

请注意,这种转换只会发生在消息中,因此我什至愿意考虑运行时转换。

感谢您的宝贵时间。

最佳答案

恐怕你会戳到自己的眼睛,因为那是正是你必须做的。我也对此感到沮丧。

您可以将选项卡作为单独的项目包含在内,如下所示:

String.Format("{0}Search \"{1}\" ({2} hits in {3} files)\n",
          "\t",
          strSearchString,
          nTotalHits,
          nNumberOfFiles);

您也可以在数字键盘上键入 Alt-012 以输入制表符。

最后,在将字符串传递给 string.Format() 之前,您可以通过执行 string.Replace("\\t", "\t") 自己“转义”制表符 并将“\t”放入字符串资源中。

不过还是有点不满意! (而且我相信您自己已经想到了所有这些想法...)

关于c# - 如何处理资源 (.resx) 文件中的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15545101/

相关文章:

c# - Windows Phone 8 推送通知空 channel uri

c# - 从 winform 使用 URI 启动应用程序

c# - Windows 窗体 ComboBox - 不区分大小写的数据绑定(bind)

wpf - 隐式样式不适用于自定义控件

java - maven项目中的资源和配置加载

.net - 如何设置相对于项目文件的资源文件路径?

c# - 创建所有 ExpressionTree/Func 参数的数组

c# - LVM_GETCOLUMN 只返回第一列的信息

c# - RestSharp 在等待响应时无法转换对象

c# - 请求方法和线程问题?