如何验证格式字符串

时间:2009-08-14 11:06:18

标签: .net internationalization string.format

我们的资源文件中有很多字符串,包含格式.e.g

  

“{0}已移至{1}”

应用程序将这些字符串传递给 String.Format(),有时翻译器会弄乱“格式化标记”因此我希望找到/编写一个工具来检查所有字符串资源文件具有有效格式。

我知道每个键传递给String.Format的args数量,以便也可以输入验证。

除了检查“{”是否匹配“}”之外,还有一种简单的方法可以找到格式字符串中的大多数错误吗?

(我正在使用.NET,这个检查当然是作为构建过程的一部分完成的)

3 个答案:

答案 0 :(得分:1)

这听起来像是一个经典的单元测试场景。你可以从源代码提交触发器驱动自动构建/单元测试吗?单元测试只会检查每个格式字符串是否仍然可解析。

答案 1 :(得分:1)

看起来您在表达式中验证字符串,因此您应该使用正则表达式link text

答案 2 :(得分:1)

我提出了一个简单的解决方案,它给出了一个合理的结果,我知道格式语句的参数个数,但不知道参数的类型。但是大多数参数都是字符串。

所以

if (numberOfArguments == 3)
{
  try
  {
    String.Format(theTranslatorString, "", "", "")
  }
  catch
  {
     // tell the translator there is a problem with the string format
  }
}

当然,对于现实生活中的每一个论点,这都是没有“if”的。