2011-07-17 4 views
7

, 나는 commons-lang으로 작업을 수행 할 수 있습니다문자열의 끝 공백을 다듬는 방법은 무엇입니까? 자바에서

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

것은 내가 스칼라에서이 작업을 수행 할 수있는 기본 방법이 있는지 알고 싶은, 또는 제 3 자 의존하지 않고 스칼라에서 작업을 수행하는 방법 ?

+1

자바 스칼라와 완벽하게 상호 운용이 가능하고, 스칼라의 문자열이 실제로 자바의 문자열이기 때문에 당신은 당신이 제공하는 코드의 같은 라인을 사용할 수 있습니다. 아니면 Scala에서 그렇게하는 관용적 인 방법에 대해 묻고 있습니까? – agilesteel

+0

@agilestell, 당신 말이 맞아요. 질문을 – Freewind

+0

복제 할 수 있습니다. http://stackoverflow.com/questions/2269509/scala-string-chomp * retronym * answer를 확인하십시오. – paradigmatic

답변

8

당신은 정규식으로 작업을 수행 할 수 있습니다 외부 종속성없이

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

'replaceAll' 대신'replaceFirst'만으로 충분합니까? –

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

아니, 추출기를 먼저 val로 선언해야합니다. –

5

또 다른 가능한 방법은 이름이 풍부한 String 클래스에서 방법 dropWhile을 사용하는 것입니다 StringOps

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

문자열의 시작 부분에서 공간은 reverse 방법을 제거 :

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

+1 와우, 좋았어요! – Jonas