求来个高手用C#语言拆分简单的数学表达式 数学c#需求 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉要用到栈,匹配括号用递归的思想会拆分(a+b)*(c+d)其它的也能拆分了 public string[] Analyze(string input) { input = input.Replace(" ",string.Empty); Regex regclearbracket = new Regex(@"\(([^(]+?)\)"); Regex regclearcomma = new Regex(@"([,\d\$]+\*[,\d\$]+)"); MatchEvaluator evalclearbracket = new MatchEvaluator(RepClearBracket); MatchEvaluator evalclearcomma = new MatchEvaluator(RepClearComma); while (regclearbracket.IsMatch(input)) { input = regclearbracket.Replace(input, evalclearbracket); while (regclearcomma.IsMatch(input)) input = regclearcomma.Replace(input, evalclearcomma); } return input.Replace("$","*").Replace(",","+").Split(new char[] { '+' }, StringSplitOptions.RemoveEmptyEntries); } public string RepClearBracket(Match m) { return m.Groups[1].Value.Replace("+", ",").Replace("*","$"); } public string RepClearComma(Match m) { cs c = new cs(m.Groups[1].Value.Split(new char[] { '*' }, StringSplitOptions.RemoveEmptyEntries)); return c.ToString(); }public class cs { public cs(string[] c) { l = c[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); r = c[1].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); } public string[] l; public string[] r; public override string ToString() { List<string> yz = new List<string>(); for (int i = 0; i < l.Length; i++) { for (int j = 0; j < r.Length; j++) { yz.Add(l[i] + "$" + r[j]); } } return string.Join(",", yz.ToArray()); } } C# 正则表达式,老大们来帮帮忙! 高手们帮忙解决下for循环的问题 正确输出每个同学的总分 webdav 如何 下载邮件附件? 将一个字符串分成两个字符串 C#有没用于验证日期是否合法的类? progressBar 如何与下载的文件同步 [串口类问题]:有谁用过这个串口类,请教用法?? C# winform TextBox显示带下划线的数字为UU 请教下C#与C++在图像处理上的比较 C#添加服务引用出现问题 window如何才能被单击事件拖动?
public string[] Analyze(string input)
{
input = input.Replace(" ",string.Empty);
Regex regclearbracket = new Regex(@"\(([^(]+?)\)");
Regex regclearcomma = new Regex(@"([,\d\$]+\*[,\d\$]+)"); MatchEvaluator evalclearbracket = new MatchEvaluator(RepClearBracket);
MatchEvaluator evalclearcomma = new MatchEvaluator(RepClearComma); while (regclearbracket.IsMatch(input))
{
input = regclearbracket.Replace(input, evalclearbracket);
while (regclearcomma.IsMatch(input))
input = regclearcomma.Replace(input, evalclearcomma);
} return input.Replace("$","*").Replace(",","+").Split(new char[] { '+' }, StringSplitOptions.RemoveEmptyEntries);
} public string RepClearBracket(Match m)
{
return m.Groups[1].Value.Replace("+", ",").Replace("*","$");
} public string RepClearComma(Match m)
{
cs c = new cs(m.Groups[1].Value.Split(new char[] { '*' }, StringSplitOptions.RemoveEmptyEntries));
return c.ToString();
}
public class cs
{
public cs(string[] c)
{
l = c[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
r = c[1].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
} public string[] l; public string[] r; public override string ToString()
{
List<string> yz = new List<string>(); for (int i = 0; i < l.Length; i++)
{
for (int j = 0; j < r.Length; j++)
{
yz.Add(l[i] + "$" + r[j]);
}
} return string.Join(",", yz.ToArray());
}
}