题目意思解析:
{Group1}
Example1{Item1} , Example2{Item2}
Key{Example1{Item1},Example2{Item2}}, Value{Example1{Item1},Example2{Item2}}
诸如这样的形式,我们往往需要准确的得到分组,这就需要我们找倒每一个“{”对应的“}(这里不仅仅限于{},任何符号都可以,只要定义成对即可),很显然,用string.Split(); 是行不通的。
解决方案:
我们可以利用栈来实现,栈最大的特点就是先进后出,括号匹配也是一样的,最前面的括号肯定试和最后面的括号匹配,所以用栈实现比较合适。
方案代码:
传入需检测的字符串,得到第一个‘{’对应的‘}’的位置
int MatchedPosition(string testString)
{
int end = 0;
Stack stack = new Stack();
for (int i = 0; i < testString.Length; i++)
{
switch (testString[i])
{
case '{':
stack.Push(i);
break;
case '}':
stack.Pop();
end = stack.Any() ? 0 : i;
break;
}
}
return end;
}