Как с помощью оператора when реализовать выборку из строки по слову
Условно говоря, у меня есть фраза "Каждый охотник желает знать где сидит фазан" и мне нужно реализовать оператор when так, чтобы из всей строки к каждому слову из этого предложения соответствовал определенный цвет. Каждый - RED, охотник - ORANGE...
Ответы (2 шт):
Довольно сложно понять как именно вы будете использовать 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()))
}
я просто не знаю где вы это планируете использовать, поэтому не могу привязаться к предметной области :)
Насколько я понимаю вам нужна следующая логика:
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
}