如何获取所有字符串格式参数

时间:2010-04-27 13:12:34

标签: c# .net string parameters string-formatting

有没有办法获取字符串的所有格式参数?

我有这个字符串:“{0} test {0} test2 {1} test3 {2:####}” 结果应该是一个列表: {0} {0} {1} {2:####}

.net中是否有支持此功能的内置功能?

5 个答案:

答案 0 :(得分:3)

您可以使用正则表达式查找与该模式匹配的所有子字符串。

\{.*?\}之类的正则表达式可能会成功。

答案 1 :(得分:3)

我没有听说过这样的内置功能,但你可以试试这个(我假设你的字符串包含以数字开头的标准格式参数):

List<string> result = new List<string>();
string input = "{0} test {0} test2 {1} test3 {2:####}";
MatchCollection matches = Regex.Matches(input, @"\{\d+[^\{\}]*\}");
foreach (Match match in matches)
{
    result.Add(match.Value);
}

它返回列表中的{0} {0} {1} {2:####}值。对于tehMick的字符串,结果将为空集。

答案 2 :(得分:1)

不,没有内置功能来执行此操作。你必须用正则表达式或其他东西解析它们

答案 3 :(得分:1)

看起来不像。 Reflector建议所有格式字符串解析都发生在StringBuilder.AppendFormat(IFormatProvider,string,object [])中。

答案 4 :(得分:0)

要找到所有花括号的良好起点,您应该查看FormatWith extension method