web-dev-qa-db-fra.com

Comment convertir String to int en Groovy de la bonne façon

Tout d’abord, je connais la question ' Groovy String to int ' et ses réponses. Je suis un nouveau né de la langue Groovy et je joue actuellement à quelques notions de base. Les manières les plus simples de convertir String en int semblent être:

int value = "99".toInteger()

ou:

int value = Integer.parseInt("99")

Ces deux fonctionnent, mais les commentaires à ces réponses m'ont confondu. La première méthode

String.toInteger ()
est obsolète, comme indiqué dans la documentation groovy. Je suppose aussi que 

Integer.parseInt ()
utilise la fonctionnalité Java principale.

Ma question est donc la suivante: existe-t-il un moyen legal, pur groovy d’exécuter une tâche aussi simple que de convertir String en int?

12
koto

Je peux me tromper, mais je pense que la plupart des plus grosses way utiliserait un "123" as int sûr.

Vraiment, vous avez beaucoup de manières avec un comportement légèrement différent, et toutes sont correctes.

"100" as Integer // can throw NumberFormatException
"100" as int // throws error when string is null. can throw NumberFormatException
"10".toInteger() // can throw NumberFormatException and NullPointerException
Integer.parseInt("10") // can throw NumberFormatException (for null too)

Si vous voulez obtenir null au lieu d'exception, utilisez la recette de la réponse que vous avez liée.

def toIntOrNull = { it?.isInteger() ? it.toInteger() : null }
assert 100 == toIntOrNull("100")
assert null == toIntOrNull(null)
assert null == toIntOrNull("abcd")
26
Seagull

Si vous souhaitez convertir une chaîne qui est une expression math, et pas seulement un nombre unique, essayez groovy.lang.Script.evaluate (expression de chaîne) :

print evaluate("1+1"); // note that evalute can throw CompilationFailedException
0
Noam Manos