求 C# 正则表达式

_z3422_ _z3422_ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
   Dictionary<string, string> str = new Dictionary<string, string>();
str.Add("a1", KryptonTextBox1.Text);
str.Add("a2", KryptonTextBox2.Text);
str.Add("a3", KryptonTextBox3.Text);
try
{
string temp = textABC.Text;
foreach (KeyValuePair<string, string> kv in str)
{
temp = Regex.Replace(temp, string.Format("^{0}|{0}$|(?<=[-+ (*/]){0}(?=[-+ )*/])", kv.Value), kv.Key);
}
Expression ep = new Expression(temp);
//Expression ep = new Expression(textABC.Text.Replace(str["a1"], "a1").Replace(str["a2"], "a2").Replace(str["a3"], "a3"));
ep.Parameters["a1"] = Convert.ToDouble(textA.Text);
ep.Parameters["a2"] = Convert.ToDouble(textB.Text);
ep.Parameters["a3"] = Convert.ToDouble(textC.Text);

labResult.Text = ep.Evaluate().ToString();
}
catch (Exception ex)
{
labResult.Text = ex.Message;
}


上面这段代码里,foreach 里的替换好像没实现,有没大牛可以把这个正则补充完整?
想达到的效果是
在工资表达式里 住宿 * 300 + 水电 *1.5 + 早餐 * 3 + 午餐 *8+ 晚餐 *8
经过替换后得到 A1 *300 + A2 * 1.5 + A3 *3 + A4 * 8 +A5*8
str 里保存了所有的项目 { A1 住宿 }{A2 水电}{A3 早餐}{A4 午餐}{A5 晚餐}

所以正则要求是 找出 str 的 value 并 替换成 key
正则要求 字符串匹配 左右 结束 或为空 或是 + - * / 符号
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
_z3422_
C# 111,129 成员 642,538 内容