这是我关于计算器的第一个问题,请多多包涵。我必须做一个按钮来反转加减运算符。所以1 + 2-3将变成1-2 + 3。 我使用btnChangeOperator将一个简单的字符串(如1 + 2)管理为1-2,反之亦然。但是,当我尝试将其设置为1 + 2-3并将其更改为1-2 + 3时,它得到了我1 + 2 + 3,然后又更改为1-2-3。 我首先尝试使用正则表达式:
Regex pattern = new Regex("[+-]");
if (txtInput1.Text.Contains("-"))
{
txtInput1.Text = pattern.Replace(txtInput1.Text, "--");//jace can manage that, I also tried "+"
txtInput2.Text = pattern.Replace(txtInput2.Text, "+");
}
else if (txtInput1.Text.Contains("+"))
{
txtInput1.Text = pattern.Replace(txtInput1.Text, "+-");//jace can manage that, I also tried with "-"
txtInput2.Text = pattern.Replace(txtInput2.Text, "-");
}
仅适用于1 + 2或1-2和1 + 2 + 3或1-2-3,但不适用于1 + 2-3或1-2 + 3。我也尝试过使用Replace,但这是相同的问题:
if (txtInput1.Text.Contains("-"))
{
txtInput1.Text = txtInput1.Text.Replace("-", "+");
txtInput2.Text = txtInput2.Text.Replace("-", "+");
}
else if (txtInput1.Text.Contains("+"))
{
txtInput1.Text = txtInput1.Text.Replace("+", "-");
txtInput2.Text = txtInput2.Text.Replace("+", "-");
}
我也尝试过先转换为数学算法,例如+-/-+ =-和-= +,然后再将其更改为+/-。但这不会起作用,因为+-会变成+。我使用Jace addition进行计算,这非常好。我也考虑过开关情况,但我无法实现。 有人可以指出正确的方向,因为困难是加号可以是负号,但是在我的代码中它将再次直接变为加号。 谢谢。
编辑: 我用了乔·菲利普斯的答案,它是如此简单和好,没有if语句,只有1行代码(之所以2行是因为我有2个txtFields)。
txtInput1.Text = txtInput1.Text.Replace("+", "p").Replace("-", "+").Replace("p", "-");
txtInput2.Text = txtInput2.Text.Replace("+", "p").Replace("-", "+").Replace("p", "-");
全部。
答案 0 :(得分:2)
如果您只是将减号更改为加号,反之亦然,请使用正则表达式替换为匹配评估器
var text = "001-34+323";
Regex.Replace(text, "[-+]", me => { return me.Value == "-" ? "+" : "-"; })
结果
001+34-323
如果需要,您可以让匹配评估程序考虑更多方案,只需在括号之间添加更多代码。