斯卡拉String
方法(在StringOps
類)stripMargin
去除的多線String
的每一行至多前導空白和包括該管(|
)字符(或其他指定的分隔符)。Scala的帶尾的空格
是否有一個等價的方法來刪除每行的尾部空白?
我快速瀏覽了Scaladocs,但找不到一個。
斯卡拉String
方法(在StringOps
類)stripMargin
去除的多線String
的每一行至多前導空白和包括該管(|
)字符(或其他指定的分隔符)。Scala的帶尾的空格
是否有一個等價的方法來刪除每行的尾部空白?
我快速瀏覽了Scaladocs,但找不到一個。
您可以輕鬆地使用正則表達式爲:
input.replaceAll("""(?m)\s+$""", "")
在正則表達式的(?m)
前綴使其成爲一個多正則表達式。 \s+
匹配1個或多個空白字符和$
行結束(因爲多行標誌)。
也許是:s.lines.map(_.reverse.stripMargin.reverse).mkString("\n")
或System.getProperty("line.separator")
代替"\n"
?!
這可能不是最有效的方式,但你也可以這樣做:
scala> println("<"+" abc ".trim+">")
<abc>
的Java String
方法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
但是,這隻會分別從多行字符串的第一行和第一行中刪除空格。 – Ralph 2011-05-18 19:51:44
@Ralph啊的確如此。抱歉。 – 2011-05-18 19:57:31
拆分 'N' 微調:
val trimmed = str.lines map { s => s.reverse.dropWhile (c => c == ' ').reverse.mkString(System.getProperty("line.seperator"))
注意:split(「\ n」)使用正則表達式匹配。使用split('\ n')似乎更好地傳達了預期的含義(在最近的世界中不會有性能差異,因爲split是單字符模式的特殊外殼 - 請參閱[Java split String performance](http:// stackoverflow的.com /一個/16673分之11002374)。 – Suma 2015-02-27 14:46:22
str.reverse.dropWhile(_ == ' ').reverse
不錯'行',但'_ =='''是可能的 – 2011-05-18 17:11:08
是的,我在發佈後想到了這一點。 – 2011-05-18 17:14:26