2011-07-17 12 views
7

, ben commons-lang ile yapabilirsiniz:Bir dizenin bitiş boşlukları nasıl kırpılır? java olarak

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

ben scala bunu yapmanın herhangi yerleşik bir yöntem olup olmadığını bilmek istiyorum, ya da herhangi bir 3. taraf bağımlılıkları olmadan scala içinde bunu nasıl ?

+1

Java Scala ile birlikte çalışmaya elverişli olduğunu ve Scala'nın dizeleri aslında Java'nın dizeleri olduğundan Verdiğiniz kod aynı satırını kullanabilirsiniz. Yoksa Scala'da bunu yapmak için deyimsel bir yol mu soruyorsun? – agilesteel

+0

@agilestell, haklısınız. – Freewind

+0

olası yinelemesini güncellememe izin verin: http://stackoverflow.com/questions/2269509/scala-string-chomp Check * retronym * answer. – paradigmatic

cevap

8

Bir regex ile yapabilirsiniz: dış bağımlılıkları olmadan

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

"replaceFirst" yerine "replaceAll" yerine bulamaz mıydınız? –

2

ve tek kırparak sonlandırmak:

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

Teşekkürler! Bu çok tatlı! – Freewind

+0

Tek satırda yazmak mümkün mü? – Freewind

+0

nope, extractor'ı ilk vals olarak ilan etmelisiniz –

5

Bir diğer olası yolu adında zengin String sınıftan yöntemini dropWhile kullanmaktır StringOps

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

Düzeltmeniz gerekiyorsa dizenin başındaki boşluklar sadece reverse kaldırma yöntemleriyle:

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

+1 Wow, bu güzeldi! – Jonas

İlgili konular