我试图找出一种方法来找出符合特定条件的字符串的最长前缀。
编写一个确实如此的命令式方法是微不足道的,但我是scala的新手,并想知道是否有一种惯用的scala(或函数)方法来做到这一点。
答案 0 :(得分:1)
例如,这个:
def predicate(str: String): Boolean = ???
val longest_matching: Option[String] =
Iterator(mystring.size, 0, -1) // iterator of lengths
.map(mystring.take) // take string prefix
.find(predicate) // find first matching entry
longest_matching.fold {
println("No matching prefix")
} { prefix =>
println("Longest matching prefix: " + prefix)
}
您可以使用inits
:
val longest_matching = mystring.inits.find(predicate)