2017-12-07 8 views
1

Groovy의 오브젝트 내에 맵이 있습니다. 지도에는 긴 문자열로 만들어진 키가 있습니다. 내지도의 키에 문자열 내의 특정 값이 포함되어 있는지보고 싶고 부울을 반환합니다.키가 맵에 값을 포함하고 있는지 확인하고 부울을 반환합니다.

예를 들어 내지도 키가 'X1234_RANDOM_STRING'인 경우 매개 변수가 X1234 인 경우 내지도를보고 그 값을 가진 키가 있는지 확인하고 false를 반환합니다.

현재는 .find를 사용하고 있는데 부울을 반환하지 않지만 .containsKey()를 사용할 수 있다고 생각했지만 내 매개 변수에 문자열의 일부만 포함될 수는 있습니다. 당신은 부울 출력을해야하는 경우

map.find { 
    it.key.toString().contains(code) 
} 

답변

1

, collect 대신 find 사용합니다. 여기

당신은 이동 :

def code = 'X1234' 
def map = [X1234_RANDOM_STRING: 1] 
print map.collect { it.key.toString().contains(code) } 
0

이 (당신의 시도에 매우 근접) 다음 사항을 고려하십시오

def map = ['X1234_RANDOM_STRING': 5150] 
def code = 'X1234' 

def found = map.find { it.toString().contains(code) } as Boolean 
assert found 

def notFound = map.find { it.toString().contains('foo') } as Boolean 
assert ! notFound 

캐스트 때문에 Groovy Truth의 작동합니다.