C# 是否有方法确定字符串的格式正确?

C# 是否有方法确定字符串的格式正确?,c#,.net,C#,.net,我有一个场景,用户可以输入一个格式字符串来格式化一些参数。 如何根据.NET Framework(C#)中的特定参数计数确定格式字符串无效? 框架中有什么方法可以做到这一点吗?或者我必须尝试手动方式 样本情况: string format = "test {0}, {1}"; var res = string.Format(format, 23); 您可以使用正则表达式来验证字符串的格式,见MSDN上的一篇文章 您可以使用正则表达式验证MSDN文章下面的字符串格式 解析格式字符串并不总是简单的

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

样本情况:

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

您可以使用正则表达式来验证字符串的格式,见MSDN上的一篇文章


您可以使用正则表达式验证MSDN文章下面的字符串格式


解析格式字符串并不总是简单的,因为转义大括号是如何计数的(请参阅),但是正则表达式和
Regex.Matches().Count
应该足够精确:

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

var expectedParameters=Regex.Matches(format,“(?解析格式字符串并不总是简单的,因为转义大括号是如何计数的(请参阅),但是正则表达式和
Regex.Matches().Count
应该足够准确:

string format = "test {0}, {1}";
var expectedParameters = Regex.Matches(format, "(?<!\\{)\\{[^}]*?\\}").Count;
string format=“test{0},{1}”;
var expectedParameters=Regex.Matches(format,“(?关于“{0},{0}”?“{0:Z}”?”等等)。这是一个非常不友好的UI,只有.NET程序员才能使用。至少显示格式化结果的预览,这样问题就可以立即显现出来。如果不是来自异常,那么来自结果字符串。关于“{0},{0}”?“{0:Z}”呢?等等。这是一个非常不友好的UI,只有.NET程序员才能使用。至少显示格式化结果的预览,这样问题就会立即显现出来。如果不是来自异常,则来自结果字符串。