我有一個列表def vrs=["6.0","6.1","6.1.0"]
(版本),我得到一個函數中的地圖,其值爲def test=[version:6.1 HotFix11]
。檢查一個列表的值包含在一個字符串中?
如何檢查test
的version
值是否與列表vrs
匹配?
我想這vrs.each{ver-> println test.version.contains(ver)}
但它給Exception in thread "main" java.lang.StackOverflowError
更新
原來我的代碼有什麼問題。我想在一個小的Groovy腳本&它工作的測試用例,所以..
下面是完整的代碼
private Map params
private def root
private def nineBelow
XmlHandler(String xml)
{
nineBelow=["6.0","6.1","6.1.0"]
params=[:]
root=new XmlParser().parseText(xml)
}
def getParams()
{
if(root.product.version.size()>0)
{
params.version=root.product.version.text()
}
/*nineBelow.each {
println params.version //even this throws java.lang.StackOverflowError
//println "$it , ${params.version}"
//println ver.getClass()+", "+params.version.getClass()
}*/
println nineBelow.each{ver-> println params.version.contains(ver)}
/*I need to check whether `params.version` matches with `nineBelow` list, so i'll check for condition here*/
params
}
這就要求getParams()
static main(args) {
String fileContents = new File('E://Projects/agent6.1.xml').text
XmlHandler xm=new XmlHandler(fileContents)
def params=xm.getParams()
println params
}
更新
另一類即使println nineBelow.each { println params.version}
給我Exception in thread "main" java.lang.StackOverflowError
更多更新
它下面的代碼
def ver=params.version
println nineBelow.each { println ver.contains(it) }
這裏有什麼問題後才工作?
我試過一個例子,它的工作原理也很好。但無論如何,問題得到解決。看到我的問題更多更新 – abi1964 2012-04-27 08:38:10
你能解決另一個[問題在這裏](http://stackoverflow.com/questions/10346903/how-to-use-a-groovy-class-in-a-jsp-page)? – abi1964 2012-04-27 10:08:32
我正在使用錯誤的jar而不是'groovy-all-1.8.6.jar'我使用的是'groovy-1.8.6.jar'它解決了我的問題,另一個問題。謝謝 – abi1964 2012-04-27 10:58:38