博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 字符串函数计算
阅读量:5072 次
发布时间:2019-06-12

本文共 3594 字,大约阅读时间需要 11 分钟。

仅供参考:

#region 字符串函数计算        ///         /// 字符串函数运算        /// 格式1:@函数名(参数1,参数2...)        /// 格式2:@函数名(参数1,参数2...)+@函数名(参数1,参数2...)-@函数名(参数1,参数2...)....        ///         ///         /// 
private decimal StringToFunction(string str) { decimal result = 0; //是否带有运算符 if (Regex.IsMatch(str, @"[\+|\-|\*|\/]")) { //替换所有运算符,方便分析函数(参数) var newstr = Regex.Replace(str, @"[\+|\-|\*|\/]", "(*_*)"); //函数结果容器 List
list_decimal = new List
(); foreach (string hs in newstr.Split(new string[] { "(*_*)" }, StringSplitOptions.None).ToList()) { var dec = GetData(hs); list_decimal.Add(dec); } //运算符 var matches = Regex.Matches(str, @"[\+|\-|\*|\/]"); for (int de = 0; de < list_decimal.Count; de++) { if (de == 0) { result += list_decimal[de]; } else { switch (matches[de - 1].Value) { case "+": result += list_decimal[de]; break; case "-": result -= list_decimal[de]; break; case "*": result *= list_decimal[de]; break; case @"/": result /= list_decimal[de]; break; } } } } else //不带运算符 { result = GetData(str); } return result; } ///
/// 数据获取 /// ///
///
private decimal GetData(string str) { decimal result = 0; //解析函数 var modelFunction = GetFunction(str); switch (modelFunction.funname.ToLower()) { case "xj_je": break; case "jqy": //result = JQY(modelFunction.parameter); break; case "-jqy": //result = JQY(modelFunction.parameter); break; case "nc": result = NC(modelFunction.parameter); break; case "ye": result = YE(modelFunction.parameter); break; } return result; } #endregion ///
/// 获取函数名 /// ///
字符串 ///
private ModelFunction GetFunction(string str) { string funname = Regex.Replace(str, @"@|(\(.+\))", ""); List
parameter = new List
(); var p = Regex.Matches(str, @"\d+"); for (int i = 0; i < p.Count; i++) { parameter.Add(p[i].Value); } ModelFunction model = new ModelFunction() { funname = funname, parameter = parameter }; return model; } private class ModelFunction { ///
/// 函数名称 /// public string funname { get; set; } ///
/// 参数 /// public List
parameter { get; set; } }

 

转载于:https://www.cnblogs.com/OleRookie/p/8441905.html

你可能感兴趣的文章
linux下IPTABLES配置详解
查看>>
【mysql升级步骤】windows mysql版本升级 ,mysql 5.6 升级到5.7.27
查看>>
Linux内核优化
查看>>
为什么应用程序用户启动时崩溃,使用xcode打开却不会
查看>>
session
查看>>
多线程面试题Top53
查看>>
多线程编程
查看>>
django中模型详解-字段类型与约束条件
查看>>
js学习总结----预解释、作用域、this原理及应用
查看>>
js面试题-----算法类
查看>>
2)添加光标和图标
查看>>
人工智能会伤害人类吗?怎样控制他们?
查看>>
【趟坑】公共引用的jar包 pom的配置方法
查看>>
leetcode 110 Balanced Binary Tree
查看>>
时间单位与存储单位换算
查看>>
OC调用Swift
查看>>
禅定感受记录 1
查看>>
node 开启本地服务器代码
查看>>
[LeetCode] Delete Node in a Linked List
查看>>
分分钟教会你使用HTML写Web页面
查看>>