I have this:
val msg = \"Preparado para cocinar...\"
val message = msg.splitAt(msg.length()/2)
println(message._1 + \"\\n\" + message._2.trim())
A reasonably elegant functional solution
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. )
A variant that just checks the empty list once
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
}