2017-12-07 4 views
1

Ich habe eine Karte innerhalb eines Objekts in Groovy. Die Map hat Schlüssel, die aus langen Strings bestehen. Ich möchte sehen, ob ein Schlüssel in meiner Map einen bestimmten Wert innerhalb der Zeichenkette enthält und einen booleschen Wert zurückgibt.Finden Sie, ob der Schlüssel Wert in einer Karte enthält und geben Sie einen booleschen Wert

Zum Beispiel, wenn mein Map Key 'X1234_RANDOM_STRING' ist, wenn mein Parameter X1234 ist, möchte ich in meiner Map suchen und sehen, ob der Schlüssel mit diesem Wert existiert und true von false zurückgibt.

Momentan benutze ich .find aber dies liefert keinen booleschen Wert, ich dachte, ich könnte .containsKey() verwenden, aber das wird nicht funktionieren, wenn mein Parameter nur einen Teil der Zeichenkette enthält.

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

Antwort

1

Wenn Sie boolean Ausgang benötigen, verwenden collect statt find.

Hier gehen Sie:

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

Betrachten Sie die folgende (sehr nah an Ihrem Versuch):

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 

Die Besetzung arbeitet wegen Groovy Truth.

Verwandte Themen