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