cómo comparar la cadena que se pasa como parámetro
el siguiente método no funciona.
String str = "saveMe"
compareString(str)
def compareString(String str){
def str2 = "saveMe"
if(str2==${str}){
println "same"
}else{
println "not same"
}
}
también probé
String str = "India"
compareString(str)
def compareString(String str){
def str2 = "india"
if( str2 == str ) {
println "same"
}else{
println "not same"
}
}
India
no es lo mismo queindia
. El primer carácter es diferenteRespuestas:
Esta línea:
if(str2==${str}){
Debiera ser:
if( str2 == str ) {
El
${
y}
le dará un error de análisis, ya que solo deben usarse dentro de Groovy Strings para crear plantillasfuente
India
con mayúsculasI
yindia
minúsculasi
como en la edición de su pregunta?India != india
. Ellos son diferentes.Esta debería ser una respuesta
Si quieres ignorar el caso
fuente
==
operador para la comparación de cadenas (en contraste con Java, donde==
hace la comparación de identidad, no la comparación de cadenas)..equals()
no se comporta igual en Groovy que en Java. Ejemplo aquí : desplácese hacia abajo hasta 'GString and String'. Básicamente, ambos elementos deben ser del mismo tipo de clase String. Dado que la clase String está implícita en la asignación, GString es una construcción del lenguaje Groovy y String es una definición en línea, algo comodef foo = "foo"
..."${foo}".equals("foo")
regresaráfalse
.Si no desea verificar en mayúsculas o minúsculas, puede usar el siguiente método.
String str = "India" compareString(str) def compareString(String str){ def str2 = "india" if( str2.toUpperCase() == str.toUpperCase() ) { println "same" }else{ println "not same" } }
Así que ahora, si cambia str a "iNdIa", seguirá funcionando, por lo que reducirá la posibilidad de cometer un error tipográfico.
fuente
str2.equalsIgnoreCase( str )
es probablemente más fácil de leer :-)La forma más corta (imprimirá "no es el mismo" porque la comparación de cadenas distingue entre mayúsculas y minúsculas):
def compareString = { it == "india" ? "same" : "not same" } compareString("India")
fuente
En Groovy,
null == null
obtiene untrue
. En tiempo de ejecución, no sabrá qué sucedió. En Java,==
se comparan dos referencias.Esta es una causa de gran confusión en la programación básica, si es seguro usar equals. En tiempo de ejecución, null.equals dará una excepción. Tienes la oportunidad de saber qué salió mal.
Especialmente, obtiene dos valores de claves que no existen en los mapas, los
==
hace iguales.fuente
use la variable def, cuando quiera comparar cualquier String. Utilice el siguiente código para ese tipo de comparación.
def nombre de variable = nulo
La consulta SQL le da algo de retorno. Utilice la función con el tipo de retorno def.
def functionname (def variablename) {
devolver el nombre de la variable
}
if ("$ nombre de variable" == "verdadero") {
}
fuente