我有一個場景,用戶可以輸入格式字符串來格式化一些參數。 如何根據.NET Framework(C#)中參數的具體計數確定格式字符串無效?
有沒有在框架中的任何方法來做到這一點?或者我必須嘗試一種手動方式?是否有方法確定字符串格式正確?
樣本情況:
string format = "test {0}, {1}";
var res = string.Format(format, 23);
我有一個場景,用戶可以輸入格式字符串來格式化一些參數。 如何根據.NET Framework(C#)中參數的具體計數確定格式字符串無效?
有沒有在框架中的任何方法來做到這一點?或者我必須嘗試一種手動方式?是否有方法確定字符串格式正確?
樣本情況:
string format = "test {0}, {1}";
var res = string.Format(format, 23);
您可以在MSDN使用正則表達式,以驗證字符串格式,文章下面
http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.aspx
解析格式字符串並不簡單,因爲如何計算出逃避花括號(見documentation),但正則表達式和Regex.Matches().Count
應該足夠精確:
string format = "test {0}, {1}";
var expectedParameters = Regex.Matches(format, "(?<!\\{)\\{[^}]*?\\}").Count;
「{0},{0}」如何? 「{0:Z}」?等等。這是一個非常不友好的用戶界面,只有.NET程序員才能使用。至少會顯示格式化結果的預覽,因此問題會立即顯現。如果不是,則從結果字符串中除外。 – 2012-08-01 08:31:34