2013-03-20 34 views
1

我有一張地圖,並希望得到所有關鍵:其中的關鍵一正則表達式匹配值對。我有一個解決方案,我grep的keySet()首先他們循環通過,找到。但是必須有一個更簡單的解決方案(或者我希望)。的Groovy/Grails的:獲取鍵:值對滿足正則表達式

例:

def qmap = [name: "hair", style: 'straight', color_1: 'brown', color_2: 'blonde', color_3: 'black'] 

我想獲得一個子圖只用顏色。

def colors = [color_1: 'brown', color_2: 'blonde', color_3: 'black'] 

我可以用.grep拿到鑰匙,但這只是給了我鑰匙,我需要遍歷得到的值。

def colorKeys = qmap.keySet().grep(~/^color.*/) 

任何想法如何做到這一點?

回答

1

你可以做

qmap.subMap(colorKeys) 
+0

逸是大炸彈!謝謝。 – ibaralf 2013-03-21 03:12:36

1

真的很簡單。只要做到:

qmap.findAll{ k,v -> k.matches(~/^color.*/) }