Scala带尾随空格

时间:2011-05-18 15:03:51

标签: scala string

Scala String方法(在课程StringOps中)stripMargin从多行String的每一行删除前导空格,直至​​并包括管道{{{ 1}})字符(或其他指定的分隔符)。

是否有从每行中删除尾随空格的等效方法?

我快速查看了Scaladocs,但找不到一个。

6 个答案:

答案 0 :(得分:26)

Java String方法trim从开头和结尾删除空格:

scala> println("<"+"  abc  ".trim+">")
<abc>

答案 1 :(得分:24)

您可以轻松使用正则表达式:

input.replaceAll("""(?m)\s+$""", "")

正则表达式中的(?m)前缀使其成为多行正则表达式。 \s+匹配1个或多个空格字符,$匹配行尾(因为多行标记)。

答案 2 :(得分:6)

拆分'n'trim'n'mkString(就像摇滚乐队):

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

答案 3 :(得分:2)

这可能不是最有效的方法,但您也可以这样做:

val trimmed = str.lines map { s => s.reverse.dropWhile ( c => c == ' ').reverse.mkString(System.getProperty("line.seperator"))

答案 4 :(得分:1)

或许:s.lines.map(_.reverse.stripMargin.reverse).mkString("\n")System.getProperty("line.separator")代替"\n"?!

答案 5 :(得分:-1)

str.reverse.dropWhile(_ == ' ').reverse