用字符串中的多个字符替换多个字符
Replace multiple chars with multiple chars in string
我正在寻找用 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)
只需使用 zip
和 transform
函数添加另一种方式
val l1 = listOf("ā", "ē", "ī", "ō", "ū")
val l2 = listOf("a", "e", "i", "o", "u")
l1.zip(l2) { a, b -> word = word.replace(a, b) }
l1.zip(l2)
将构建 List<Pair<String,String>>
即:
[(ā, a), (ē, e), (ī, i), (ō, o), (ū, u)]
并且 transform
函数 { a, b -> word = word.replace(a, b) }
将使您能够访问每个列表中的每个项目 (l1 ->a , l2->b)
。
我正在寻找用 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)
只需使用 zip
和 transform
函数添加另一种方式
val l1 = listOf("ā", "ē", "ī", "ō", "ū")
val l2 = listOf("a", "e", "i", "o", "u")
l1.zip(l2) { a, b -> word = word.replace(a, b) }
l1.zip(l2)
将构建 List<Pair<String,String>>
即:
[(ā, a), (ē, e), (ī, i), (ō, o), (ū, u)]
并且 transform
函数 { a, b -> word = word.replace(a, b) }
将使您能够访问每个列表中的每个项目 (l1 ->a , l2->b)
。