Groovy - comment comparer la chaîne?

Comment comparer la chaîne qui est passée en paramètre

La méthode suivante ne fonctionne pas.

 String str = "saveMe"

 compareString(str)

 def compareString(String str){
    def str2 = "saveMe"
    if(str2==${str}){
      println "same"
    }else{
      println "not same"
    }
 }    

Également essayé

 String str = "India"

 compareString(str)

 def compareString(String str){
   def str2 = "india"
   if( str2 == str ) {
     println "same"
   }else{
     println "not same"
   }
 }    
47
demandé sur amarillion 2012-08-16 13:32:00

6 réponses

Cette ligne:

if(str2==${str}){

Devrait être:

if( str2 == str ) {

Les ${ et } vous donneront une erreur d'analyse, car ils ne devraient être utilisés que dans des chaînes Groovy pour la création de modèles

45
répondu tim_yates 2012-08-16 09:33:53

Cela devrait être une réponse

Str2.equalsIgnoreCase (str)

77
répondu ojblass 2014-05-08 18:57:03

Si vous ne voulez pas vérifier les majuscules ou les minuscules, vous pouvez utiliser la méthode suivante.

String str = "India" 
compareString(str) 

def compareString(String str){ 
  def str2 = "india" 
  if( str2.toUpperCase() == str.toUpperCase() ) { 
    println "same" 
  }else{ 
    println "not same" 
  } 
}

Alors maintenant, si vous changez str en "Inde", cela fonctionnera toujours, donc vous réduisez les chances de faire une faute de frappe.

6
répondu Dieterg 2012-08-16 09:45:35

Le chemin le plus court (imprimera "not same" car la comparaison de chaînes est sensible à la casse):

def compareString = {
   it == "india" ? "same" : "not same"
}    

compareString("India")
2
répondu Simek 2013-01-21 08:42:10

Utilisez la variable def, lorsque vous voulez comparer une chaîne. Utilisez le code ci-dessous pour ce type de comparaison.

Nom de la variable Def = null

La requête SQL vous donne un retour. Utilisez la fonction avec le type de retour def.

Def functionname(Def variablename) {

Retourne le nom de la variable

}

If ("$nom de la variable" == "true"){

}

-4
répondu Deepanshu Jain 2016-03-03 12:50:01

En Groovy, null == null obtient un true. Au moment de l'exécution, vous ne saurez pas ce qui s'est passé. En Java, == compare deux références.

Ceci est une cause de grande confusion dans la programmation de base, Qu'il soit sûr d'utiliser equals. Au moment de l'exécution, un null.equals donnera une exception. Vous avez une chance de savoir ce qui a mal tourné.

En Particulier, vous obtenez deux valeurs de clés n'existent pas dans la carte(s), == les rend égales.

-5
répondu user4313287 2016-03-11 10:02:43