1

我尝试拆分字符串,例如:

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

到:

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

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

4

2 回答 2

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

如果不需要手动执行,则使用一些外部包。

于 2013-01-17T18:18:01.807 回答
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 , ")");
于 2013-01-18T07:21:10.487 回答