如何在资源(.resx)文件中处理字符串文字

问题描述:

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

将消息'搜索“SomeString”(23个点击3个文件)',其中是消息开头的选项卡空间。要创建这样一个消息,我用这样的代码

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

问题是现在,当我包括在资源文件我在运行时获取以下输出

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

显然它不处理字符串"\tSearch \"{0}\" ({1} hits in {2} files)\n"字符串文字作为C#本身。我知道要在资源​​文件中创建新行,我必须使用Shift + 返回,但是您对tab等人做了什么?请不要说复制到Word或记事本++,并添加选项卡,复制后或我会戳我自己的眼睛。

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

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

谢谢你的时间。

恐怕你会在自己的眼中戳,因为那是正好你必须要做的。我也因此而感到沮丧。

你可以包括标签作为一个单独的项目,如:

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

您也可以在数字键盘上键入Alt-012输入标签。

最后,在将字符串传递给string.Format()并在字符串资源中放入“\ t”之前,您可以通过执行string.Replace("\\t", "\t")来“逃避”选项卡。

这一切都有点不满意寿! (我相信你自己已经想到了所有这些想法......)

+0

Daammmmn [Chris Tucker的声音]!我曾想过做'String.Replace()'方法。但这是事态的事实是_amazing_。我想为我的消息,我要'String.Replace()'。马修再次感谢您的帮助。 – MoonKnight 2013-03-21 10:50:08