基于数学运算符拆分字符串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);
欢迎光临 :)
(计算器程序)用数学基本顺序一步算
如果有字符串= "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);
欢迎光临 :)