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" 

cuando corrió dan error siguiente:cómo encontrar si args maravilloso contiene una cadena en particular

[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] 

por qué no puedo hacer contains?

Respuesta

14

Debido args es String[] pero no List<String>

Usted puede utilizar

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

Mire un problema similar [aquí] (http://stackoverflow.com/questions/10345795/check-a-lists-value-contains-in-a-string) – abi1964

1

Eso es porque args es un arreglo de cuerdas (al igual que en Java) y no una cadena, echar un vistazo al resultado de:

print args.getClass() 

>>class [Ljava.lang.String; 

Aviso del [L notación.

una cadena normal resultaría en:

>>class java.lang.String 

Los contenedores maravillosos no tienen la contiene() operación (String hace), sin embargo, el java.lang.Object de Groovy SDK tiene la operación grep() (mostrado en la primera respuesta).

Cuestiones relacionadas