как найти, содержит ли 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 () (показанную в первом ответе).