如何在Kotlin中将String的某些字符与HashMap <string,string>的值交换?

时间:2018-01-17 18:48:07

标签: list hashmap kotlin higher-order-functions

假设我有一个

val s: String = "14ABC5"

并拥有HashMap

val b: HashMap<String,String> = hashMapOf("A" to "10", "B" to "11", "C" to "12", "D" to "13", "E" to "14", "F" to "15" )

如何在保持秩序(“1”,“4”,“10”,“11”,“12”,“5”)的同时更改所有出现的A,B,C 10,11,12 ?

到目前为止,我有这个

val result: List<String> = s.toUpperCase().toCharArray().map{ it.toString() }.map{ it -> b.getValue(it)}

如果String中存在HashMap的所有字符,但我的String也可能包含不存在的键,则

有效。

2 个答案:

答案 0 :(得分:3)

您可以使用getOrDefault(...)或Kotlinesque b[it] ?: it

顺便说一句,如果您使用隐式lambda参数名称(it),则可以删除it ->

答案 1 :(得分:1)

默认情况下,您可以将String用作可迭代,并按如下方式简化代码:

s.map { it.toString() }
 .map { b[it] ?: it }