2012-08-01 69 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;