Как сделать, если строка не заканчивается на in Kotlin

#android #android-studio #kotlin

#Android #android-studio #kotlin

Вопрос:

У меня была своя идея, но она не сработала

 String.text != String.text.toString().lastOrNull() in arrayOf(' ', '-', '/', '*', '.')
  

С ошибкой

оператор «!=’ не может быть применен к ‘CharSequence!’ ‘и Boolean’

Полный:

 if(operation amp;amp; currentOpperand.text != currentOpperand.text.toString().lastOrNull() arrayOf(' ', '-', '/', '*', '.')
  

(Я хочу, чтобы если Boolean «операция» == true и строка не заканчивается этим массивом символов, выводилось » «. (создание калькулятора))

Комментарии:

1. вы можете использовать EndsWith() в Kotlin

2. @ShaluTD Я не думаю, что это работает, потому что он / она хочет проверить наличие массива символов. EndsWith() не принимает vararg символов. Изменение!= с ! .equals() должен выполнять эту работу?

3. Я знаю о EndsWith(), но я хочу создать массив, а make не заканчивается на, что-то вроде этого, если это возможно

4. !in — вам это нужно? someString.lastOrNull() !in arrayOf(' ', '-', '/', '*', '.')

5. изменение!= wuth! .equals() не сработал

Ответ №1:

попробуйте это:

 if (operation amp;amp; currentOpperand.text.lastOrNull() !in arrayOf(' ', '-', '/', '*', '.')){

}
  

или

 if (operation amp;amp; arrayOf(' ', '-', '/', '*', '.').all { c -> !currentOpperand.text.endsWith(c) }){

}
  

или с regex :

 if (operation amp;amp; currentOpperand.text.matches(Regex(".*[^ -/*.]$"))){
    
}
  

Комментарии:

1. !в сработало хорошо, не ожидал такого простого решения: D Madloba