在我处理的网络应用中,我们将所有翻译放入.resx文件中,然后通过调用Resources.FileName.KeyName
来引用这些文件(如“使用强类型检索全局资源”一节中所述){ {3}})。
在某些地方,我们会直接检索值,但在很多情况下,我们检索要在JavaScript中使用的值,因此我们需要执行以下操作:HttpUtility.JavaScriptStringEncode(Resources.FileName.KeyName)
问题在于,需要通过追溯调用HttpUtility.JavaScriptStringEncode
来包含数千种此类行。
必须有更好的方法来实现这一点,而不是通过整个源代码并手动将每个引用包装到资源。
我需要一种更好的方式来使用Resources.FileName.KeyName
包裹每个HttpUtility.JavaScriptStringEncode()
来电,而不是手动转到每个参考并自行添加。
答案 0 :(得分:0)
我无法为此提出真正的解决方案,所以我决定使用正则表达式来解决这个问题。
现在,问题在于我们仍在使用Visual Studio 2010,它拥有自己的正则表达式子集,与许多高级技巧不兼容,因此断言不是一种选择。
相反,我刚刚找到<Resources\.Thread.{[a-zA-Z0-9_]+}
的所有实例,并将其替换为HttpUtility.JavaScriptStringEncode( Resources.Thread.\1 )
。
如果你已经有一些正确调用JavaScriptStringEncode的实例,这可以创建重复的调用,所以不幸的是,我必须找到HttpUtility.JavaScriptStringEncode\(HttpUtility.JavaScriptStringEncode\( {[a-zA-Z0-9_ \.\)]+}\)\)
的所有实例并将其替换为HttpUtility.JavaScriptStringEncode( \1)
。
括号内替换字符串末尾缺少空格是有意格式化的。
还有其他衍生工具要进行分类(括号之间的空格),但这是基线。经过几次搜索以清理重复的呼叫后,就完成了。
不是我最好的工作,但最好不能升级到Visual Studio 2012/2013并使用带有断言的真正正则表达式一次性完成所有操作(显然,如果你能做到这一点,这显然是推荐的)。