Как создать функцию, которая будет фильтровать данный массив
Как создать функцию, которая потребует массив строк с двумя аргументами и строку в качестве ключа, которая будет фильтровать данный массив по переданному ключу аргумента (String), если элемент массива содержит не менее 3 символов переданного аргумента, будет отфильтрован, результат печати , если результата нет, необходимо вывести «нет результата» в виде текста.
если элемент массива содержит не менее 3 символов переданного аргумента Именно это строка никак не получается.Есть кто знает как можно сделать
fun main() {
val myArray = arrayOf("akaio","huise","seoli")
val word = "aka"
arrCheck(myArray,word)
/* arrFilter1(myArray,word)*/
}
//Simple way to check if array contains a word
fun arrCheck(arr: Array<String>, ex: String) {
for (i in arr) {
if (i.contains(ex)) {
val filteredArray = arr.filterNot { it == ex }
println(filteredArray)
}else
println("No Result")
}
}
Ответы (1 шт):
Если вам требуется среди списка слов найти все слова, в которых будут присутствовать абсолютно все буквы из искомого слова(включая не уникальные вхождения), то можно сделать как-то так:
val found = arr.filter { word ->
val startIndexes = mutableMapOf<Char, Int>()
!ex.any() { c ->
startIndexes[c] = word.indexOf(c, startIndexes.getOrDefault(c, -1)+1)
startIndexes[c] == -1
}
}
println(if (found.isNotEmpty()) found else "Not found")
Если же нужно найти строки длинной больше 3 символов, у которых начало совпадает с первыми 3-мя символами переданного слова, то все проще:
val found = arr.filter { it.length > 3 && it.startsWith(ex.substring(0, 3)) }