Scala String
方法(在课程StringOps
中)stripMargin
从多行String
的每一行删除前导空格,直至并包括管道{{{ 1}})字符(或其他指定的分隔符)。
是否有从每行中删除尾随空格的等效方法?
我快速查看了Scaladocs,但找不到一个。
答案 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