kotlin - 用字符串中的多个字符替换多个字符

标签 kotlin replace replaceall

我正在寻找在 Kotlin 中用相应的不同字符替换多个不同字符的可能性。
例如,我在 PHP 中寻找与此类似的函数:

str_replace(["ā", "ē", "ī", "ō", "ū"], ["a","e","i","o","u"], word)
现在在 Kotlin 中,我只是像这样调用 5 次相同的函数(对于每个人声):
var newWord = word.replace("ā", "a")
newWord = word.replace("ē", "e")
newWord = word.replace("ī", "i")
newWord = word.replace("ō", "o")
newWord = word.replace("ū", "u")
这当然可能不是最好的选择,如果我必须用一个单词列表而不是一个单词来做这件事。有没有办法做到这一点?

最佳答案

您可以通过遍历 word 中的每个字符来维护字符映射并替换所需的字符。 .

val map = mapOf('ā' to 'a', 'ē' to 'e' ......)
val newword = word.map { map.getOrDefault(it, it) }.joinToString("")
如果你想对多个词做,可以创建一个扩展函数以获得更好的可读性
fun String.replaceChars(replacement: Map<Char, Char>) =
   map { replacement.getOrDefault(it, it) }.joinToString("")


val map = mapOf('ā' to 'a', 'ē' to 'e', .....)
val newword = word.replaceChars(map)

关于kotlin - 用字符串中的多个字符替换多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68466496/

相关文章:

java - com.android.builder.dexing.DexArchiveMergerException : Error while merging dex archives:

sql-server - 使用 SQL 替换表中的引号字符

正则表达式

java - 用另一个字符串中的每个字符替换字符串中的字符

Java replaceAll 正则表达式中的新行

java - Intellij 不构建类

json - 使用 Jackson 序列化(反)序列化 Kotlin 委托(delegate)属性

Kotlin lambda 语法混淆

regex - 使用 Perl 正则表达式搜索并替换特定长度的字符串

Java 用重音符号替换所有内容