Kotlin - Существует ли базовая функция для замены нескольких строк на несколько строк в ссылочной строке? - PullRequest
1 голос
/ 16 января 2020

Существует ли базовая функция или простой способ замены нескольких строк на несколько строк в ссылочной строке?

Я видел Замена нескольких строк несколькими другими строками , но она использует известные списки вместо переменных.

Например:

У меня есть val str = "THE GOAT IS RED", и я хочу заменить все символы другими символами или цифрами, что-то вроде:

str.replace("THEGOAISRD".toList(), "0123456789".toList())  

К чему приведет

"012 3450 67 829"

Ответы [ 2 ]

4 голосов
/ 16 января 2020
val list1 = listOf('a', 'b', 'c')
val list2 = listOf('0', '1', '2')
val str = "abacada"
val transform = list1.withIndex().associate { it.value to list2[it.index] }
val result = str.map { transform[it] ?: it }.joinToString(separator = "")
println(result)

отпечатки 01020d0

0 голосов
/ 17 января 2020

Вы можете сделать это, сначала создав словарь (Map<Char, Char>), используя zip, а затем итерируя строку для преобразования с joinToString следующим образом:

val str = "THE GOAT IS RED"

val dictionary = "THEGOAISRD".zip("0123475689").toMap()

val result = str.toCharArray().joinToString("") {
    dictionary.getOrDefault(it, it).toString()
}

println(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...