Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert String to int in Groovy the right way

Tags:

groovy

First of all, I am aware of question 'Groovy String to int' and it's responses. I am a newbe to Groovy language and right now playing around some basics. The most straightforward ways to convert String to int seem to be:

int value = "99".toInteger()

or:

int value = Integer.parseInt("99")

These both work, but comments to these answers got me confused. The first method

String.toInteger()
is deprecated, as stated in groovy documentation. I also assume that

Integer.parseInt()
makes use of the core Java feature.

So my question is: is there any legal, pure groovy way to perform such a simple task as converting String to an int?

like image 809
koto Avatar asked Mar 15 '16 09:03

koto


People also ask

Which is the correct way of converting string to int?

Use Integer.parseInt() to Convert a String to an Integer This method returns the string as a primitive type int. If the string does not contain a valid integer then it will throw a NumberFormatException.

How do I convert string to decimal in Groovy?

parseInt(String s) − This returns an integer (decimal only).

Which method converts integer to string?

The Integer.toString() method converts int to String. The toString() is the static method of Integer class. The signature of toString() method is given below: public static String toString(int i)


1 Answers

I might be wrong, but I think most Grooviest way would be using a safe cast "123" as int.

Really you have a lot of ways with slightly different behaviour, and all are correct.

"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)

If you want to get null instead of exception, use recipe from answer you have linked.

def toIntOrNull = { it?.isInteger() ? it.toInteger() : null }
assert 100 == toIntOrNull("100")
assert null == toIntOrNull(null)
assert null == toIntOrNull("abcd")
like image 75
Seagull Avatar answered Oct 24 '22 20:10

Seagull