基于数学运算符拆分字符串c#

split string c# based on math operator

(计算器程序)用数学基本顺序一步算

如果有字符串= "5+2*6/9"(这是用户输入)如何得到数字2和6? 我一直在尝试拆分,但如果没有“+”,它就会失败:(

这是我的 atm 密码

 string[] a = kalimat.Split('*');
                        string[] a1 = a[0].Split('+');
                        string[] a2 = a1[a1.Count() - 1].Split('-');
                        string[] b1 = a[1].Split('+');
                        string[] b2 = b1[0].Split('-');
                        ang1 = a2[a2.Count() - 1];
                        ang2 = b2[0];
                        angka1 = Convert.ToDouble(ang1);
                        angka2 = Convert.ToDouble(ang2);
                        hasil = angka1 * angka2;

有什么想法吗?

如果您输入的表达式始终采用以下形式:“[一些数字]+[您想要的第一个值 return]*[您想要的第二个值 return]” 然后这应该适合你:

var reg = new System.Text.RegularExpressions.Regex(@"\d\+(\d)\*(\d)");
var result = reg.Match("5+2*6/9");
var first = result.Groups[1];
var second = result.Groups[2];

您当然可以调整正则表达式搜索模式以满足您的需要。

解析任意数学表达式并非易事。如果这不是需要您手动进行解析的作业,我建议您找一个库来完成这项任务,例如 NCalc

您可以从 Nuget 安装它,并使用以下简单代码:

var kalimat = "5+2*6/9";
var hasil = new NCalc.Expression(kalimat).Evaluate();
Console.WriteLine(hasil);

欢迎光临 :)