2011-07-17 46 views
7

在java中,我可以commons-lang做到这一点:如何修剪字符串的结尾空白?

StringUtils.stripEnd(" abc \t", null) // => " abc" 

我想知道是否有任何内置的方法在Scala中要做到这一点,还是怎么办呢Scala中没有任何第三方的依赖?

+1

因为Java是Scala的完全互通,以及Scala的琴弦实际上是Java的字符串,您可以使用您所提供的代码在同一行。或者你是否问过在Scala中这样做的惯用方式? – agilesteel

+0

@agilestell,你是对的。让我更新 – Freewind

+0

可能的重复问题:http://stackoverflow.com/questions/2269509/scala-string-chomp检查* retronym *答案。 – paradigmatic

回答

8

你可以用正则表达式做到这一点:

" string ".replaceAll("\\s+$", ""); 
res0: java.lang.String = " string" 
+0

在这里不会'replaceFirst'而不是'replaceAll'吗? –

2

如果没有外部的依赖,只有结束修剪:

scala> val s = " test \t" 
s: java.lang.String = " test  " 

scala> val Regex = """^(.*?)\s*$""".r 
Regex: scala.util.matching.Regex = ^(.*?)\s*$ 

scala> val Regex(trimmed) = s 
trimmed: String = " test" 
+0

谢谢!这好可爱! – Freewind

+0

是否可以单行写入? – Freewind

+0

nope,您需要首先声明提取器为val –

5

另一种可能的方式是使用方法dropWhile名为富StringStringOps

scala> val y = " abcd ".reverse.dropWhile(_ == ' ').reverse 
y: String = " abcd" 

如果您需要修剪从字符串的开头空格只是删除reverse方法:

scala> val y = " abcd ".dropWhile(_ == ' ') 
y: String = "abcd " 
+0

+1哇,这很好! – Jonas