2011-07-17 22 views
7

Trong java, tôi có thể làm điều đó với commons-lang:Làm thế nào để cắt khoảng trống cuối của một chuỗi?

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

Tôi muốn biết nếu có bất kỳ phương pháp tích hợp để làm điều này trong scala, hoặc làm thế nào để làm điều đó trong scala mà không cần bất kỳ phụ thuộc bên thứ 3 ?

+1

Kể từ Java là hoàn toàn tương thích với Scala, và chuỗi Scala của thực sự là chuỗi Java của bạn có thể sử dụng cùng một dòng mã mà bạn cung cấp. Hay bạn đang hỏi về một cách làm thành ngữ trong Scala? – agilesteel

+0

@agilestell, bạn nói đúng. Hãy để tôi cập nhật câu hỏi – Freewind

+0

có thể trùng lặp: http://stackoverflow.com/questions/2269509/scala-string-chomp Kiểm tra * retronym * answer. – paradigmatic

Trả lời

8

Bạn có thể làm điều đó với một regex:

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

Sẽ không thay thế 'replaceFirst' ở đây thay vì' replaceAll'? –

2

Nếu không có phụ thuộc bên ngoài và chỉ kết thúc cắt tỉa:

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

cảm ơn bạn! Cái này thật dễ thương! – Freewind

+0

Có thể viết một dòng không? – Freewind

+0

nope, bạn cần phải khai báo các vắt như một val đầu tiên –

5

Một cách khác có thể là sử dụng phương pháp dropWhile từ lớp giàu String tên StringOps

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

Nếu bạn cần cắt gian từ lúc bắt đầu chuỗi chỉ cần loại bỏ reverse phương pháp:

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

+1 Wow, điều này là tốt đẹp! – Jonas

Các vấn đề liên quan