2017-12-22 34 views
1

문자열이 /sample/data입니다. 내가 split를 사용하여 분할 때 나는문자열 groovy의 배열을 가진 Findall

["","sample","data"]

내가 빈 문자열 (들)을 무시하려면, 다음과 같은 결과를 얻을. 그래서 나는 다음과 같은 코드, 그것은 나에게 오류 "cannot call String[] findAll with argument bool"를 제공

"/sample/data".split('/').findAll(it != "") 

을 시도했다.

어떻게 빈 문자열없이 목록을 분할하고 가져올 수 있습니까? 당신은 다음과 같이 할 수

+1

괄호가 아닌 중괄호를 사용하십시오. findAll 메소드는 클로저를 기대합니다. –

+0

네이슨 감사합니다. – Kajal

답변

1

:

println "/sample/data".split('/').findAll {it} 

findAll {it} 모든 비어 있지 않은 값을 가져 오는 것입니다.

+0

라오 감사합니다. 그것은 내 문제를 해결했다. – Kajal

3

균열 메서드는 배열을 반환합니다. 당신이 목록이 필요하면 ,

"/sample/data".tokenize('/') 

또한이 경우에 findall은을 사용할 필요가 없습니다 토큰 화 사용합니다.

1

괄호가 작동합니다 (질문에 대한 의견 참조). 그래서 솔루션은 이미 가까이 :

"https://stackoverflow.com/a/b".split("/").findAll() 

그루비 대부분의 기능이 정체성 폐쇄와 함수를 호출 제로 인수에 대응을 가지고 있기 때문에. 그리고 빈 문자열은 거짓으로 간주되므로 필터링하면 필터링됩니다.