给予合格式串提供的用户(使用 String.Format)和集中的类型代表的参数,将使用的格式复合格式串,你怎么检查的用户提供的价值是否有效?

它应该是很容易地创建一个定期表达检查的一般法的观点占位匹配"{index[,alignment][:formatString]}"每 该文件.并不太多,难以验证的指标所占位符合格式串都少于实际数量的输入参数(即他们不准参数,不会给定的).然而,鉴于该类型的参数,将通过在是已知的,它也应该能够验证的":formatString"适用于那些类型。

例如,你想要验证用户的未指定"{0:dddd MMMM}"作为一个格式串当第一个参数类型(0索引)是一个数字(String.Format("{0:dddd MMMM}", 1234) 产量"dddd MMMM").数量的":formatString"选项的类型 太大 要手动检查的一切。是否有任何其他方式吗?或者你只是必须与用户的可能指定一个糟糕的格式串?

假设没有定义的 IFormatProvider, ICustomFormatterIFormattable 实现在起在这里。只是基本的类型已经在。净框架。奖励点数用于解决定义的东西。

有帮助吗?

解决方案

有是这样做的没有内置方式,AFAIK。

您可以每天常见的情况手工代码,但我不建议这样做。

(的修改)一个实用选项可能被try/catch - 尽早测试格式当用户进入它....

其他提示

很抱歉,但做到这一点的方法是:

try { string.Format(godKnowsWhat, aBunchOfArguments); }
catch(FormatException) { // use exception for control flow lol }

是的,有点不好。

如果用户指定的格式错误的字符串可能会导致异常,那么也许你可以尝试一下?是的,这是天真的和琐碎的想法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top