2017-07-27 53 views
-1

我有一個圖是這樣的:如何尋找在一個Groovy地圖的關鍵是類GStringImpl

[FOOBAR:["FOOBAR"], \b(De(\w+))\b:["DELI", "DELEGATE"], SSN:["111-55-4444"]]

當我重複的地圖和打印類類型的鍵

,我得到這樣的:

myMap.each{ k, v -> println "${k.class}:${v}" } 
class java.lang.String:[FOOBAR] 
class org.codehaus.groovy.runtime.GStringImpl:[DELI, DELEGATE] 
class java.lang.String:[111-55-4444] 

問題

我怎樣才能找到類GStringImpl的關鍵?

我試過以下,但它不工作:

myMap[/\b(De(\w+))\b/] == ["DELI", "DELEGATE"] 
|   |     | 
|   null    false 
[FOOBAR:[FOOBAR], \b(De(\w+))\b:[DELI, DELEGATE], SSN:[111-55-4444]] 

更新:根據意見

OP想用一個變量作爲關鍵

+0

你想使用'正則表達式'作爲關鍵? – Rao

+0

呃。不,我不知道。但是,我處理的正則表達式是作爲來自用戶的搜索條件輸入的。這就是爲什麼我把這作爲一個關鍵。我會調用'toString()'來結束這個瘋狂。感謝您的指針 – Anthony

+0

好的。你喜歡在密鑰中使用變量嗎?或者你想使用正則表達式來聲明該值? – Rao

回答

1

在這裏你去,它只是微不足道的,你需要把它放在(..)之間。

改變它:

def myMap = [FOOBAR:["FOOBAR"], \b(De(\w+))\b:["DELI", "DELEGATE"], SSN:["111-55-4444"]] 

到:

def userKey = 'key' 
def myMap = [FOOBAR:["FOOBAR"], (userKey):["DELI", "DELEGATE"], SSN:["111-55-4444"]] 

編輯:更新的詳細信息。

Groovy接受沒有引號和引號的密鑰。所以,如果它是對象,那麼需要被包裹在(..)之間。它可以是任何對象。

+0

哦,好的。我不知道'(..)'謝謝 – Anthony

+0

是的。如此解決? Groovy接受沒有引號的密鑰。所以,如果它是對象,那麼需要被包裹在'(..)'之間。它可以是任何對象。 – Rao

相關問題