Is there a way to get all format parameters of a string?
I have this string: "{0} test {0} test2 {1} test3 {2:####}" The result should be a list: {0} {0} {1} {2:####}
Is there any built in functionality in .net that supports this?
Is there a way to get all format parameters of a string?
I have this string: "{0} test {0} test2 {1} test3 {2:####}" The result should be a list: {0} {0} {1} {2:####}
Is there any built in functionality in .net that supports this?
no, there is no built in feature to do this. You'd have to parse them out with a regex or something
You could use a regular expression to find all the substrings matching that pattern.
A regular expression like \{.*?\}
would probably do the trick.
It doesn't look like it. Reflector suggests all the format string parsing happens inside StringBuilder.AppendFormat(IFormatProvider, string, object[]).
To get a good starting point on finding all the curly braces you should take a look into the FormatWith extension method.
I didn't hear about such a build-in functionality but you could try this (I'm assuming your string contains standard format parameters which start with number digit):
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);
}
it returns {0} {0} {1} {2:####}
values in the list. For tehMick's string the result will be an empty set.