2012-08-01 72 views
0

我有一个场景,用户可以输入格式字符串来格式化一些参数。 如何根据.NET Framework(C#)中参数的具体计数确定格式字符串无效?
有没有在框架中的任何方法来做到这一点?或者我必须尝试一种手动方式?是否有方法确定字符串格式正确?

样本情况:

string format = "test {0}, {1}"; 
var res = string.Format(format, 23); 
+1

“{0},{0}”如何? “{0:Z}”?等等。这是一个非常不友好的用户界面,只有.NET程序员才能使用。至少会显示格式化结果的预览,因此问题会立即显现。如果不是,则从结果字符串中除外。 – 2012-08-01 08:31:34

回答

0

解析格式字符串并不简单,因为如何计算出逃避花括号(见documentation),但正则表达式和Regex.Matches().Count应该足够精确:

string format = "test {0}, {1}"; 
var expectedParameters = Regex.Matches(format, "(?<!\\{)\\{[^}]*?\\}").Count;