то, как найти, если отличный 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?

7
задан groovynoob 12 March 2010 в 16:11
поделиться

2 ответа

Поскольку args равно String [] , но не List

, вы можете использовать

if (args.grep('Hello'))
    println "Found Hello"
15
ответ дан 6 December 2019 в 12:48
поделиться

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

print args.getClass()

>>class [Ljava.lang.String;

Обратите внимание на [L обозначение.

Обычная строка приведет к следующему:

>>class java.lang.String

Контейнеры Groovy не имеют операции contains () (есть в String), но java.lang.Object Groovy SDK имеет операцию grep () (показано на первом Ответить).

1
ответ дан 6 December 2019 в 12:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: