/// <summary>
/// 获取一串四则运算表达式第n个括号内容
/// </summary>
public class BracketString
{
//1+(5-(10-(6+2))*3) n=3 => 6+2 , n=2 => 10-(6+2)*3
public string GetInnerString(string exp,int n)
{
exp = exp.Replace(" ", "");
string result = "";
Stack<string> stack = new Stack<string>();
List<string> list = new List<string>();
int inNum = 0; //记录 ( 数目
int outNum = 0; //记录 ) 数目
for (int i = 0; i < exp.Length; i++)
{
if (exp[i] == '(')
{
inNum++;
stack.Push(""+ inNum + exp[i]);
}
else if (exp[i] == ')')
{
if (n == inNum - outNum)
{
while (stack.Peek() != "" + n + '(')
{
list.Add(stack.Pop());
}
}
else
{
outNum++;
stack.Push(exp[i]+"");
}
}
else
{
stack.Push(exp[i] + "");
}
}
list.Reverse();
for(int i = 0; i < list.Count; i++)
{
if (list[i].Contains("("))
{
list[i] = "(";
}
if(list[i].Contains(")"))
{
list[i] = ")";
}
result += list[i];
}
return result;
}
}
/// 获取一串四则运算表达式第n个括号内容
/// </summary>
public class BracketString
{
//1+(5-(10-(6+2))*3) n=3 => 6+2 , n=2 => 10-(6+2)*3
public string GetInnerString(string exp,int n)
{
exp = exp.Replace(" ", "");
string result = "";
Stack<string> stack = new Stack<string>();
List<string> list = new List<string>();
int inNum = 0; //记录 ( 数目
int outNum = 0; //记录 ) 数目
for (int i = 0; i < exp.Length; i++)
{
if (exp[i] == '(')
{
inNum++;
stack.Push(""+ inNum + exp[i]);
}
else if (exp[i] == ')')
{
if (n == inNum - outNum)
{
while (stack.Peek() != "" + n + '(')
{
list.Add(stack.Pop());
}
}
else
{
outNum++;
stack.Push(exp[i]+"");
}
}
else
{
stack.Push(exp[i] + "");
}
}
list.Reverse();
for(int i = 0; i < list.Count; i++)
{
if (list[i].Contains("("))
{
list[i] = "(";
}
if(list[i].Contains(")"))
{
list[i] = ")";
}
result += list[i];
}
return result;
}
}