The Scala String
method (in class StringOps
) stripMargi开发者_JS百科n
removes leading whitespace from each line of a multi-line String
up to and including the pipe (|
) character (or other designated delimiter).
Is there an equivalent method to remove trailing whitespace from each line?
I did a quick look through the Scaladocs, but could not find one.
Java String
method trim
removes whitespace from beginning and end:
scala> println("<"+" abc ".trim+">")
<abc>
You can easily use a regex for that:
input.replaceAll("""(?m)\s+$""", "")
The (?m)
prefix in the regex makes it a multiline regex. \s+
matches 1 or more whitespace characters and $
the end of the line (because of the multiline flag).
Split 'n' trim 'n' mkString (like a rock'n'roller):
val lines = """
This is
a test
a foolish
test
a
test
t
"""
lines.split ("\n").map (_.trim).mkString ("\n")
res22: String =
This is
a test
a foolish
test
a
test
t
This might not be the most efficient way, but you could also do this:
val trimmed = str.lines map { s => s.reverse.dropWhile ( c => c == ' ').reverse.mkString(System.getProperty("line.seperator"))
Perhaps: s.lines.map(_.reverse.stripMargin.reverse).mkString("\n")
or with System.getProperty("line.separator")
instead of "\n"
?!
str.reverse.dropWhile(_ == ' ').reverse
精彩评论