私は次のように文字列を分割しようとします:
((12-5=10)&&(5-4>6))
に:
- (
- (12-5=10)
- &&
- (5-4>6)
- )
正規表現を使用しようとしましたが、検索の結果が 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
手動で行う必要がない場合は、外部パッケージを使用してください。
このようなものを使用できると思います。挿入部分に関しては、私はそれがちょっと不自由であることを知っています:/
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 , ")");