как найти, содержит ли groovy args определенную строку

println args

println args.size()

println args.each{arg-> println arg}

println args.class

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

при запуске дают следующую ошибку:

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

почему я не могу сделать contains?

2 ответов


, потому что args is String[] а не List<String>

можно использовать

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

это потому, что args-это массив строк (как и в Java), а не строка, взгляните на результат:

print args.getClass()

>>class [Ljava.lang.String;

уведомления [L нотации.

обычная строка приведет к:

>>class java.lang.String

контейнеры Groovy не имеют операции contains () (строка делает), но java.ленг.Объект Groovy SDK имеет операцию grep () (показанную в первом ответе).