Как с помощью оператора when реализовать выборку из строки по слову

Условно говоря, у меня есть фраза "Каждый охотник желает знать где сидит фазан" и мне нужно реализовать оператор when так, чтобы из всей строки к каждому слову из этого предложения соответствовал определенный цвет. Каждый - RED, охотник - ORANGE...


Ответы (2 шт):

Автор решения: Andrew

Довольно сложно понять как именно вы будете использовать when, в плане передачи аргумента. Поэтому могу предложить составляющие этапы для решения вашей задачи. Вот есть у нас стринг:

val str = "Каждый охотник желает знать где сидит фазан"

дальше мы его делим на слова:

val words = str.split(" ")

на выходе будет List<String>:

[Каждый, охотник,...]

дальше чтобы получить первую букву используем метод .first():

words[0].first()

и на выходе вы получаете:

К

можем получить буквы в цикле:

for(word in words){
   print(word.first())
}

дальше можно сделать метод куда вы будете передавать ваши буквы:

fun someMethod(letter:Char):String{
   return when(char){
          'К'-> "Красный"
           ...
           else->{"Error"}   
 
   }
}

ну и в цикле используем:

for(word in words){
       print(someMethod(word.first()))
}

я просто не знаю где вы это планируете использовать, поэтому не могу привязаться к предметной области :)

→ Ссылка
Автор решения: Cypher

Насколько я понимаю вам нужна следующая логика:

private fun getColor(query: String) = when (query) {
    "Каждый" -> R.color.red
    "охотник" -> R.color.orange
    "желает" -> R.color.yellow
    "знать" -> R.color.green
    "где" -> R.color.blue
    "сидит" -> R.color.darkBlue
    "фазан" -> R.color.violet
    else -> R.color.transparent
}
→ Ссылка