我正在尝试制作一个计算器应用程序,我需要能够在有人第二次按下运算符(+,*,-,/)后获取最后一个值(第一个值被保存,没有问题,因为它是屏幕上唯一的数字)。 因此,如果屏幕顶部有类似 (222 * 3333/12) 的内容,我需要得到 12。一旦我学会了如何执行此操作,我就可以弄清楚如何保存之前的数字/总和,然后对下一个数字(虽然我还没有制作该部分)。 我知道这是一种笨拙的做事方式,任何建议都会受到赞赏。 因此,如果我使用 substringAfterLast() 并在那里插入一个运算符,我可以获取这个数字,但是,如果混合使用并使用多个运算符(如 222 * 3333/12),我的 y 变量(见下文)仅显示“222 * 3333/12 英寸而不是 12。 如何对子字符串使用多个分隔符?
顺便说一句,这是我的代码(请原谅我)
multiplybutton.setOnClickListener {
var x = numbersEntered.toString()
var y = ""
//creates an array that holds the operators so it can be easily filtered out
val operators = arrayOf<Char>('*','/','+','-')
//prevents app from crashing by saving the last value before the operator is added, allowing us to create infinite number of operations
if (x.any(operators :: contains)){
// x.split(operators.toString())
y = x.substringAfterLast('*') // can't use my operator character array here? why? how do I iterate through it?
Toast.makeText(this, y.toString(), Toast.LENGTH_SHORT).show()
// previousvalue = y.toInt()
} else {
previousvalue = x.toInt()
}
numbersEntered.append("*")
numbersEnteredBox.setText(numbersEntered.toString())
isMultiply = true;
Toast.makeText(this, previousvalue.toString(), Toast.LENGTH_SHORT).show()
}
编辑:忽略斜体,不知道出了什么问题
最佳答案
抱歉,也许我不完全理解您想要做什么,但您可以使用 split
函数从字符串中获取最后一个数字,如下所示 222 * 3333/12
:
println("222 * 3333 / 12".split('+', '-', '*', '/').last().trim().toInt())
// prints 12
关于android - 如何将多个分隔符传递给子字符串(Kotlin/Android)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63643999/