Java 如何使用scala高效地替换多个字符?

Java 如何使用scala高效地替换多个字符?,java,scala,replaceall,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") } ?

我想将5个不同的字符替换为5个不同的字符,而我目前的做法看起来很愚蠢,那么有什么更好的方法可以做到这一点呢

目前:

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

那么,您可以将字符替换内容包装到地图中:

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

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

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

private def fixChars(str: String): String = {
  val substitutions = Map(
    'Ø' -> 'O',
    'ø' -> 'o',
    ...
  )
  str.map(c => substitutions.getOrElse(c, c))
}

请更好地定义。您的代码看起来不错,只是忽略了replaceAll调用的结果。@seeLenVirtuse忽略结果是什么意思?replaceAll方法返回一个包含修改字符串的结果。它不会修改原始字符串。请注意@Seelenvirtuose的重要提示。此外,replaceAll用于正则表达式,对于字符串,只需使用replace即可。