2013-05-20 2 views
0

Je suis nouveau à groovy et c'est pourquoi je ne peux pas comprendre une chose. J'ai une tâche avec la classe groovy qui est censée lire les lignes du fichier de propriétés et changer certaines propriétés.values, par exemple 1 avec "One", 2 avec "Two" etc. J'ai extrait les valeurs de sorte que je J'ai eu 1,2,3 etc ou 5,7,1 et maintenant le problème commence Je connais la méthode replaceAll, mais est-il possible de la rendre plus flexible? Ou si je veux changer 1 2 3 je dois définir 3 méthodes replaceAll ("1", "One") ("2", "Two") ("3", "Three")? Oh et oui, changez les valeurs uniquement en sortie.Groovy manière flexible de replaceAll méthode

Répondre

3

Vous pouvez utiliser un collect et un switch (en supposant que je comprends la question:

def a = [ 1, 4, 2 ] 

def b = a.collect { 
    switch(it) { 
    case 1 : 'One' ; break 
    case 2 : 'Two' ; break 
    case 3 : 'Three' ; break 
    default : it 
    } 
} 

assert b = [ 'One', 4, 'Two' ] 

// And the other way 

def c = b.collect { 
    switch(it) { 
    case 'One' : 1 ; break 
    case 'Two' : 2 ; break 
    case 'Three' : 3 ; break 
    default  : it 
    } 
} 

assert c == a 
+0

Merci pour cette idée, a obtenu une question, cela fonctionne parfaitement, mais quand je suis en train de le faire l'autre chemin (de la chaîne à 'int') il ne trouve aucun cas, le faire comme le cas 'ONE': imprimer '1' et la collecte property.value.collect ce qui ne va pas avec mon idée? – user2141889

+0

@ user2141889 pas sûr de comprendre , mais j'ai mis à jour ma réponse pour changer 'b' de nouveau en' a' ... Est-ce que cela aide? –

+0

Oui c'est exactement ce que je cherchais, merci. – user2141889