android - 如何将多个分隔符传递给子字符串(Kotlin/Android)?

标签 android kotlin substring

我正在尝试制作一个计算器应用程序,我需要能够在有人第二次按下运算符(+,*,-,/)后获取最后一个值(第一个值被保存,没有问题,因为它是屏幕上唯一的数字)。 因此,如果屏幕顶部有类似 (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/

相关文章:

c# - Xamarin Toast 消息错误 (C#)

generics - 不允许对父类(super class)型的直接子类型进行投影

string - Kotlin - 类型不匹配 : Required: String, 找到:() -> 字符串

sql-server - 空格后的子串

Android Studio 无法识别 Google Glass,但 ADB 可以

android - GCMRegistrar.getRegistrationId(context) 无法获取设备 ID

android - Android SQLite替换成无法正常工作

Spring Boot 过滤器错误,未注册过滤器后无法注册

python - 管理矩阵中的多个字符串并对其进行子串化(Python 和 Numpy)

java - 保留文件 IO 中的换行符和间距