在Scala中是否有takeWhile,dropWhile的组合?

Fel*_*lix 19 string split scala standard-library

在Scala中,我想将字符串拆分为特定字符,如下所示:

scala> val s = "abba.aadd" 
s: String = abba.aadd
scala> val (beforeDot,afterDot) = (s takeWhile (_!='.'), s dropWhile (_!='.'))
beforeDot: String = abba
afterDot: String = .aadd
Run Code Online (Sandbox Code Playgroud)

这个解决方案效率稍低(可能不是渐近),但我觉得标准库中可能存在这样的问题.有任何想法吗?

sen*_*nia 42

有一种span方法:

scala> val (beforeDot, afterDot) = s.span{ _ != '.' }
beforeDot: String = abba
afterDot: String = .aadd
Run Code Online (Sandbox Code Playgroud)

Scala文档:

c span p(c takeWhile p, c dropWhile p)如果对谓词p的评估不会引起任何副作用,则等效于(但可能更有效).

  • 好吧,我不可能要求更接近我的问题:) (3认同)