我正在translateScala 中開發函式。它包括在類似元音的 . 之前插入“av”字符'a' , 'e' , 'i', 'o' or 'u'。請注意,文本字串有長度限制。它的長度不應該超過 225 個字符,如果它是空的,它應該回傳一個空字串: 在另一個世界:如果
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)
}
}
}
有沒有辦法使用函式式編程(如地圖、平面地圖函式)來簡化代碼?
uj5u.com熱心網友回復:
String 實際上是char's 的集合,因此您可以將其視為一個。例如:
val result = text
.map(c => if (voyelle.contains(c)) "av" c else c.toString)
.mkString
uj5u.com熱心網友回復:
怎么樣
text.replaceAll("([aeiou])", "av$1")
uj5u.com熱心網友回復:
你可以使用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
}
}
代碼在這里運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417414.html
標籤:
下一篇:如何在Scala中傳遞型別陣列?
