如何用多于一对括号分割字符串

时间:2013-01-17 18:13:06

标签: c# regex string split

我尝试将字符串拆分为:

((12-5=10)&&(5-4>6))

为:

  • (12-5 = 10)
  • &安培;&安培;
  • (5-4→6)

我尝试使用正则表达式,但serach的结果与一对括号有关, 我无法找到解决问题的方法。

2 个答案:

答案 0 :(得分:1)

如果你想手动完成,而不是试图使用正则表达式,想象一下一次解析字符串中的一个字符,并在匹配的大括号中递归分割。

伪代码:

initialize depth and start to 0
for each character  
  if it is ( increase depth
  if it is ) 
     decrease depth
     if depth is 0
         parse the substring from start to current character
         set start to current character

如果不需要手动操作,请使用一些外部包。

答案 1 :(得分:1)

猜猜你可以用这样的东西。至于插入部分,我知道它有点蹩脚:/

          string test = "((12-5=10)&&(5-4>6))";
        string[] Arr= test.Split(new string[{"(",")"},StringSplitOptions.RemoveEmptyEntries);
        List<string> newArr = new List<string>();
         int h=0;
        foreach (string s in Arr)           
        { 
            if (s != "&&")
                newArr.Add( s.Replace(s, "(" + s + ")"));
            else 
                newArr.Add(s);
            h++;
        }
        newArr.Insert(0, "(");
        newArr.Insert(newArr.Count , ")");