这不是重复。与其他StackOverflow
问题不同,我不想显示表达式的结果,然后添加minus
或plus
符号。我想在按下时将整个表达式转换为negative
或positive
。
例如:
-(5*8+7/7)
或再次按+/-
时:
5*8+7/7
这是我到目前为止所做的:
negative = !negative;
if (negative == true)
{
expression = "-(" + expression + ")";
}
else
{
expression = "+(" + expression + ")";
}
虽然这在计算方面确实有效,但我发现如何创建一种智能方式,以致+(
和-(
不会继续附加到表达式上。
答案 0 :(得分:0)
将正/负状态保持为布尔值,并在渲染时添加 - (...)部分。否则你可以匹配开头和匹配 - (相应)并简单地删除它。但是,这将错过-5的简单情况。要覆盖所有角落,您将编写相当多的代码。如果可能的话,我会把它保持为一个单独的状态。
编辑:只想添加“正确”的解决方案是解析字符串并构建表示表达式的树(AST)并检测最外层运算符是否为一元减号并简单地将其删除(或添加它如果它不存在),那么检查下一个运算符是否是括号并删除它们(如果你不只是添加减号),最后重新生成字符串。但所有这些都需要更多的工作。
答案 1 :(得分:0)
我认为你可以使用两个文本字段包括表达式,如[textfield A] [表达式] [textfield B],而textfield A和textfield B不能从用户输入,只是在用户按下负/正按钮时才更改
视图会像:
- (5 * 8 + 7/7)
要么
5 * 8 + 7/7
认为这可以帮到你。