2010-04-27 54 views
3

有没有办法获得一个字符串的所有格式参数?如何获取所有字符串格式参数

我有这样的字符串: “{0}测试{0} TEST2 {1} {TEST3 2:####}” 结果应该是一个列表: {0} {0} {1 } {2:####}

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

回答

2

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

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的字符串,结果将是一个空集。

1

不,没有内置的功能来做到这一点。你必须用正则表达式或其他东西来解析它们

3

你可以使用正则表达式来找到所有匹配该模式的子字符串。

\{.*?\}这样的正则表达式可能会诀窍。

+1

注意转义的大括号,如下所示:“while(true){{C++;}}”这里没有格式项目。 – 2010-04-27 13:20:44

+0

好点。我其实不了解C#或其格式字符串的语法。假定用一组大括号括起来的东西是格式项目是否合理? – Syntactic 2010-04-27 13:28:26

1

它看起来不像它。 Reflector建议所有的格式字符串解析都在StringBuilder.AppendFormat(IFormatProvider,string,object [])内部进行。