1

私は次のように文字列を分割しようとします:

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

に:

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

正規表現を使用しようとしましたが、検索の結果が 1 組のブラケットに関連しており、問題の解決策が見つかりません。

4

2 に答える 2

1

手動で行う場合は、正規表現を使用する代わりに、一度に 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 に答える