Рефакторить и рефакторить, но работает =)
private static List<string> ParseString(string input)
{
List<string> result = new List<string>();
int openIndex = input.IndexOf('{');
int closeIndex = input.IndexOf('}');
while (openIndex != -1 && closeIndex != -1)
{
result.Add(input.Substring(openIndex, closeIndex - openIndex + 1));
input = input.Substring(closeIndex + 1);
openIndex = input.IndexOf('{');
closeIndex = input.IndexOf('}');
}
return result;
}
+ вариант через регулярку
Взято отсюда
private static List<string> ParseStringRegex(string input)
{
Regex regex = new Regex(@"{([\s\S]+?)}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
var matches = regex.Matches(input);
return matches.Select(m => m.Value).ToList();
}