如何用scala有效地替换多个字符?

时间:2016-09-20 11:32:54

标签: java scala replaceall

我想将5个不同的字符替换为5个不同的字符,而当前这样做的方式看起来很愚蠢,那么更好的方法是什么呢?

目前:

 private def fixChars(str: String): String = {
    str.replaceAll("Ø","O")
    str.replaceAll("ø", "o")
    str.replaceAll("Ž","Z")
    str.replaceAll("ž","z")
    str.replaceAll("Ö","O")
}

2 个答案:

答案 0 :(得分:4)

我相信这种方法对您有用,只需要一次迭代就可以替换所有字符:

master

答案 1 :(得分:2)

好吧,你可以将字符替换包装到地图中:

def fixChars(str: String): String = {
    val repl = Map(
      "Ø" -> "O",
      "ø" -> "o",
      "Ž" -> "Z",
      "ž" -> "z",
      "Ö" -> "O"
    )
    repl.foldLeft(str) { case (cur, (from, to)) => cur.replaceAll(from, to) } 
}

不确定它看起来是否更好。