斯卡拉 – muliline字符串拆分
发布时间:2020-12-16 09:26:16 所属栏目:安全 来源:网络整理
导读:我有这个: val msg = "Preparado para cocinar..."val message = msg.splitAt(msg.length()/2)println(message._1 + "n" + message._2.trim()) 问题是我得到了这个结果(bcz我只是把它分成中间): Preparado para cocinar... 我怎么能有一个多(不仅是2部分)
我有这个:
val msg = "Preparado para cocinar..." val message = msg.splitAt(msg.length()/2) println(message._1 + "n" + message._2.trim()) 问题是我得到了这个结果(bcz我只是把它分成中间): Preparado pa ra cocinar... 我怎么能有一个多(不仅是2部分)显示的消息,但它应该在不在句子中间的空格中分开? 解决方法
一个相当优雅的功能解决方案
def wordWrap(s: String,n: Int) = s.split("s").foldLeft(List[String]()) { (lines,word) => if (lines.isEmpty || lines.head.length + word.length + 1 > n) word :: lines else (lines.head + " " + word) :: lines.tail } .reverse wordWrap( "Preparado para cocinar...",23) // List(Preparado para,cocinar...) wordWrap( "Preparado para cocinar...",5) // List(Preparado,para,cocinar...) wordWrap("A quick brown fox jumps over the lazy dog.",10) // List(A quick,brown fox,jumps over,the lazy,dog. ) 只检查空列表一次的变体 def wordWrap(s: String,n: Int) = { val words = s.split("s") if (words.isEmpty) Nil else words.tail.foldLeft(List[String](words.head)){ (lines,word) => if (lines.head.length + word.length + 1 > n) word :: lines else (lines.head + " " + word) :: lines.tail }.reverse } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |