【问题标题】:How do I swap some characters of a String with values of a HashMap<String,String> in Kotlin?如何在 Kotlin 中将字符串的某些字符与 HashMap<String,String> 的值交换?
【发布时间】:2018-01-17 18:48:06
【问题描述】:

假设我有一个

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 也可能包含不存在 键。

【问题讨论】:

  • 而不是“交换 List&lt;String&gt;... 的一些元素”,听起来你真的在问如何“替换 String... 的一些元素”。跨度>
  • @OliverCharlesworth 从技术上讲是的,但是由于我将其转换为 CharArray,然后将其映射到 List 我在操作该列表时遇到了困难。我只是想具体说明我的问题所在。

标签: list hashmap kotlin higher-order-functions


【解决方案1】:

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


顺便说一句,如果你使用隐式 lambda 参数名称 (it),你可以去掉 it -&gt;

【讨论】:

    【解决方案2】:

    您可以默认使用String 作为可迭代对象,并将您的代码简化如下:

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

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多