2017-12-07 7 views
1

私はGroovy内のオブジェクト内にマップを持っています。マップには長い文字列で作られたキーがあります。マップ内のキーに文字列内の特定の値が含まれているかどうかを確認し、ブール値を返します。キーにマップ内の値が含まれているかどうかを調べてブール値を返す

たとえば、マップキーが「X1234_RANDOM_STRING」の場合、パラメータがX1234の場合、マップを見て、その値を持つキーが存在するかどうかを確認し、trueを返します。

現在、私は.findを使用していますが、これはブール値を返さないため、私は.containsKey()を使用できると思っていましたが、パラメータに文字列の一部しか含まれていないと動作しません。あなたはブール出力が必要な場合

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

答えて

1

findの代わりにcollectを使用しています。ここで

あなたが行く:

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の作品。

関連する問題