2010-03-12 16 views
7
println args 

println args.size() 

println args.each{arg-> println arg} 

println args.class 

if (args.contains("Hello")) 
    println "Found Hello" 

quando corse dare seguente errore:come trovare se args groove contiene una stringa particolare

[hello, somethingelse] 
2 
hello 
somethingelse 
[hello, somethingelse] 
class [Ljava.lang.String; 
Caught: groovy.lang.MissingMethodException: No signature of method: [Ljava.lang. 
String;.contains() is applicable for argument types: (java.lang.String) values: 
[Hello] 

perché non posso fare contains?

risposta

14

Perché args è String[] ma non List<String>

È possibile utilizzare

if (args.grep('Hello')) 
    println "Found Hello" 
+0

Si prega di guardare un problema simile [qui] (http://stackoverflow.com/questions/10345795/check-a-lists-value-taintain-in-a-string) – abi1964

1

Questo perché args è un array di String (proprio come in Java) e non una stringa, dare un'occhiata al risultato di:

print args.getClass() 

>>class [Ljava.lang.String; 

Avviso il [L notazione.

A String regolare comporterebbe:

>>class java.lang.String 

I contenitori Groovy non hanno la contiene() operazione (String fa), ma la java.lang.Object di Groovy SDK ha l'operazione di grep() (mostrato nella prima risposta).

Problemi correlati