有这样一个字符串。
3+4+2+abs(3+4)+3+4+2+sin(2+2)+4-3-abs(3+5)+7-3-2+4+sin(2+3)这里我需要把所有的abs(),sin()括号中的内容分别 取出来然后计算好后替换回去。高手帮帮忙。谢谢。有源代码最好。没分了
3+4+2+abs(3+4)+3+4+2+sin(2+2)+4-3-abs(3+5)+7-3-2+4+sin(2+3)这里我需要把所有的abs(),sin()括号中的内容分别 取出来然后计算好后替换回去。高手帮帮忙。谢谢。有源代码最好。没分了
string ff = "3+4+2+abs(3+4)+3+4+2+sin(2+2)+4-3-abs(3+5)+7-3-2+4+sin(2+3)";
MatchCollection matches = regex.Matches(ff);
string str = "";
string ee = ff;
foreach (Match m in matches)
{
str = m.Value;
double a = 0;
switch (str.Substring(0, 3))
{
case "ABS":a= Math.Abs(Double.Parse(jis(str.Substring(4, str.IndexOf(")") - 4))));
break;
case "SIN": a = Math.Sin(Double.Parse(jis(str.Substring(4, str.IndexOf(")") - 4))));
break;
case "COS": a = Math.Cos(Double.Parse(jis(str.Substring(4, str.IndexOf(")") - 4))));
break;
case "SQR": a = Math.Sqrt(Double.Parse(jis(str.Substring(4, str.IndexOf(")") - 4))));
break;
case "TAN": a = Math.Tan(Double.Parse(jis(str.Substring(4, str.IndexOf(")") - 4))));
break;
case "LOG": a = Math.Log(Double.Parse(jis(str.Substring(4, str.IndexOf(")") - 4))));
break;
}
ee= ee.Replace(str, a.ToString());
}
MessageBox.Show(ee);