Converting a string to int in Groovy

Groovy

Groovy Problem Overview


I have a String that represents an integer value and would like to convert it to an int. Is there a groovy equivalent of Java's Integer.parseInt(String)?

Groovy Solutions


Solution 1 - Groovy

Use the toInteger() method to convert a String to an Integer, e.g.

int value = "99".toInteger()

An alternative, which avoids using a deprecated method (see below) is

int value = "66" as Integer

If you need to check whether the String can be converted before performing the conversion, use

String number = "66"

if (number.isInteger()) {
  int value = number as Integer
}

Deprecation Update

In recent versions of Groovy one of the toInteger() methods has been deprecated. The following is taken from org.codehaus.groovy.runtime.StringGroovyMethods in Groovy 2.4.4

/**
 * Parse a CharSequence into an Integer
 *
 * @param self a CharSequence
 * @return an Integer
 * @since 1.8.2
 */
public static Integer toInteger(CharSequence self) {
    return Integer.valueOf(self.toString().trim());
}

/**
 * @deprecated Use the CharSequence version
 * @see #toInteger(CharSequence)
 */
@Deprecated
public static Integer toInteger(String self) {
    return toInteger((CharSequence) self);
}

You can force the non-deprecated version of the method to be called using something awful like:

int num = ((CharSequence) "66").toInteger()

Personally, I much prefer:

int num = 66 as Integer

Solution 2 - Groovy

Several ways to do it, this one's my favorite:

def number = '123' as int

Solution 3 - Groovy

As an addendum to Don's answer, not only does groovy add a .toInteger() method to Strings, it also adds toBigDecimal(), toBigInteger(), toBoolean(), toCharacter(), toDouble(), toFloat(), toList(), and toLong().

In the same vein, groovy also adds is* eqivalents to all of those that return true if the String in question can be parsed into the format in question.

The relevant GDK page is here.

Solution 4 - Groovy

I'm not sure if it was introduced in recent versions of groovy (initial answer is fairly old), but now you can use:

def num = mystring?.isInteger() ? mystring.toInteger() : null

or

def num = mystring?.isFloat() ? mystring.toFloat() : null

I recommend using floats or even doubles instead of integers in the case if the provided string is unreliable.

Solution 5 - Groovy

Well, Groovy accepts the Java form just fine. If you are asking if there is a Groovier way, there is a way to go to Integer.

Both are shown here:

String s = "99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i

Solution 6 - Groovy

also you can make static import

import static java.lang.Integer.parseInt as asInteger

and after this use

String s = "99"
asInteger(s)

Solution 7 - Groovy

toInteger() method is available in groovy, you could use that.

Solution 8 - Groovy

Several ways to achieve this. Examples are as below

a. return "22".toInteger()
b. if("22".isInteger()) return "22".toInteger()
c. return "22" as Integer()
d. return Integer.parseInt("22")

Hope this helps

Solution 9 - Groovy

Groovy Style conversion:

Integer num = '589' as Integer

If you have request parameter:

Integer age = params.int('age')

Solution 10 - Groovy

def str = "32"

int num = str as Integer

Solution 11 - Groovy

Here is the an other way. if you don't like exceptions.

def strnumber = "100"
def intValue = strnumber.isInteger() ?  (strnumber as int) : null

Solution 12 - Groovy

The way to use should still be the toInteger(), because it is not really deprecated.

int value = '99'.toInteger()

The String version is deprecated, but the CharSequence is an Interface that a String implements. So, using a String is ok, because your code will still works even when the method will only work with CharSequence. Same goes for isInteger()

See this question for reference : https://stackoverflow.com/questions/1391970/how-to-convert-a-string-to-charsequence

I commented, because the notion of deprecated on this method got me confuse and I want to avoid that for other people.

Solution 13 - Groovy

The Simpler Way Of Converting A String To Integer In Groovy Is As Follows...

String aa="25"
int i= aa.toInteger()

Now "i" Holds The Integer Value.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSteve KuoView Question on Stackoverflow
Solution 1 - GroovyDónalView Answer on Stackoverflow
Solution 2 - GroovyEskoView Answer on Stackoverflow
Solution 3 - GroovyElectrons_AhoyView Answer on Stackoverflow
Solution 4 - GroovyShmaperatorView Answer on Stackoverflow
Solution 5 - GroovyMichael EasterView Answer on Stackoverflow
Solution 6 - GroovyAndreyView Answer on Stackoverflow
Solution 7 - GroovyAakarsh GuptaView Answer on Stackoverflow
Solution 8 - GroovyDarth ShekharView Answer on Stackoverflow
Solution 9 - GroovySagar Mal ShankhalaView Answer on Stackoverflow
Solution 10 - GroovyratzipView Answer on Stackoverflow
Solution 11 - GroovyBerhanu TarekegnView Answer on Stackoverflow
Solution 12 - GroovyMath MornView Answer on Stackoverflow
Solution 13 - GroovysrinivasanView Answer on Stackoverflow