【发布时间】:2011-08-28 03:53:03
【问题描述】:
Scala String 方法(在类StringOps)stripMargin 从多行String 的每一行中删除前导空格,直到并包括管道(|)字符(或其他指定的分隔符) )。
是否有等效的方法可以从每行中删除尾随空格?
我快速浏览了 Scaladocs,但找不到。
【问题讨论】:
Scala String 方法(在类StringOps)stripMargin 从多行String 的每一行中删除前导空格,直到并包括管道(|)字符(或其他指定的分隔符) )。
是否有等效的方法可以从每行中删除尾随空格?
我快速浏览了 Scaladocs,但找不到。
【问题讨论】:
Java String 方法 trim 删除开头和结尾的空格:
scala> println("<"+" abc ".trim+">")
<abc>
【讨论】:
您可以轻松地为此使用正则表达式:
input.replaceAll("""(?m)\s+$""", "")
正则表达式中的(?m) 前缀使其成为多行正则表达式。 \s+ 匹配 1 个或多个空白字符,$ 匹配行尾(由于多行标志)。
【讨论】:
Split '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
【讨论】:
这可能不是最有效的方法,但您也可以这样做:
val trimmed = str.lines map { s => s.reverse.dropWhile ( c => c == ' ').reverse.mkString(System.getProperty("line.seperator"))
【讨论】:
lines,但_ == ' ' 是可能的
也许:s.lines.map(_.reverse.stripMargin.reverse).mkString("\n") 或用System.getProperty("line.separator") 代替"\n"?!
【讨论】:
str.reverse.dropWhile(_ == ' ').reverse
【讨论】: