开发者

Scala strip trailing whitespace

开发者 https://www.devze.com 2023-03-07 00:16 出处:网络
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 d

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
0

精彩评论

暂无评论...
验证码 换一张
取 消