0
加入我想数学方程式只与另外如1 + 2 + 3,并返回其结果。我有下面的代码,问题是,它不处理双打(我不能写2.2 + 3.4) 我试图改变正则表达式为([\+-]?\d+.\d+)([\+-])(-?(\d+.\d+))
,现在它不处理整数(我不能写2 + 4 )。什么应该是正确的正则表达式来处理双精度和整数?感谢名单 代码:如何解决与正则表达式
regEx = new Regex(@"([\+-]?\d+)([\+-])(-?(\d+))");
m = regEx.Match(Expression, 0);
while (m.Success)
{
double result;
switch (m.Groups[2].Value)
{
case "+":
result = Convert.ToDouble(m.Groups[1].Value) + Convert.ToDouble(m.Groups[3].Value);
if ((result < 0) || (m.Index == 0)) Expression = regEx.Replace(Expression, DoubleToString(result), 1);
else Expression = regEx.Replace(Expression, "+" + result, 1);
m = regEx.Match(Expression);
continue;
case "-":
result = Convert.ToDouble(m.Groups[1].Value) - Convert.ToDouble(m.Groups[3].Value);
if ((result < 0) || (m.Index == 0)) Expression = regEx.Replace(Expression, DoubleToString(result), 1);
else Expression = regEx.Replace(Expression, "+" + result, 1);
m = regEx.Match(Expression);
continue;
}
}
if (Expression.StartsWith("--")) Expression = Expression.Substring(2);
return Expression;
}
,岂不是更容易使用像String.Split()?你必须坚持正则表达式吗? – Egor 2012-08-14 16:20:52
针对每个问题应用'regex'解决方案是一个非常糟糕的想法....正如叶戈尔建议的,不要使用“分割”功能! – Anirudha 2012-08-14 16:25:07
如果你想尝试编写一些可以解析和评估许多数学表达式的东西,那么请务必编写一个解析器。 – nhahtdh 2012-08-14 16:26:21