如何在scala函数中使用函数式编程

how use functional programming in scala function

我正在用 Scala 开发 translate 函数。它包括在类似元音的 'a' , 'e' , 'i', 'o' or 'u' 之前插入“av”字符。 请注意,文本字符串有长度限制。它的长度不应超过 225 个字符,如果它是空的,它应该 return 一个空字符串: 在另一个世界: 如果

text = "abdcrfehilmoyr"

结果应该是:"avabdcrfehavilmavoyr"

所以,我开发了这个功能:

def translate(text: String): String = {
  var voyelle = Array('a', 'e', 'i', 'o', 'u')
  for (w <- (0,text.length())){
    if ((text.contains(voyelle[w]) == true)) {
      text.patch(w, "av", 0)
    }
  }
}

有没有办法改用像地图、平面地图函数这样的函数式编程来简化代码?

字符串实际上是 char 的集合,因此您 can treat it like one。例如:

val result = text
  .map(c => if (voyelle.contains(c)) "av" + c else c.toString)
  .mkString

你可以直接使用flatMap

def translate(text: String): String = {
  val vowels = Set('a', 'e', 'i', 'o', 'u')
  text.trim.toLowerCase.flatMap { c =>
    if (vowels.contains(c)) s"av${c}"
    else c.toString
  }
}

代码运行here.

怎么样

   text.replaceAll("([aeiou])", "av")