看,例如,我有这个表达string expression = "(-2)+3";
我需要把它变成
string[] split = { "(" , "-2" , ")" , "+" , "3" };
我试过什么
string[] split = Regex.Split(expression, @"(\b[-+*\/]|[+-]?\d+|[-+*\/()])").Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
Output
string[] split = { "(" , "-2" , ")" , "+3" };
这是一个支持括号和一元运算符的工作解决方案示例,供您解析。
基本上,解决方案是由我的 3 个答案组装而成的:1、2和3。
我不假装自己是天才,我也认为解决方案不是很理想,但它确实有效。这个想法的本质是你需要解析已经没有括号的常规字符串进行计算,并单独处理括号。
(-1+-2)+(20*2/-4)结果-13(-2)+3结果1