如何在资源(.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")
来“逃避”选项卡。
这一切都有点不满意寿! (我相信你自己已经想到了所有这些想法......)
Daammmmn [Chris Tucker的声音]!我曾想过做'String.Replace()'方法。但这是事态的事实是_amazing_。我想为我的消息,我要'String.Replace()'。马修再次感谢您的帮助。 – MoonKnight 2013-03-21 10:50:08