Вы можете использовать регулярное выражение \b\w+\b
, чтобы сопоставить слова в предложении, а затем вызвать replace
функцию с лямбда-выражением, которая обеспечивает строку замены для каждого соответствия:
val input = "I am an amateur, alas."
val wordsToReplace = listOf("I", "am", "my")
val wordsReplaceWith = listOf("You", "are", "your")
val wordRegex = """\b\w+\b""".toRegex()
val result = wordRegex.replace(input) { match ->
val wordIndex = wordsToReplace.indexOf(match.value)
if (wordIndex >= 0) wordsReplaceWith[wordIndex] else match.value
}
println(result)
Если в ваших списках много слов, имеет смысл составить карту из них, чтобы ускорить поиск:
val replaceMap = (wordsToReplace zip wordsReplaceWith).toMap()
val result = wordRegex.replace(input) { match ->
replaceMap[match.value] ?: match.value
}