Steve Kuo
Steve Kuo

Reputation: 63134

Converting a string to int in Groovy

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

Upvotes: 342

Views: 445387

Answers (13)

Math Morn
Math Morn

Reputation: 21

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 : 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.

Upvotes: 1

Dónal
Dónal

Reputation: 187399

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

Upvotes: 575

Shmaperator
Shmaperator

Reputation: 271

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.

Upvotes: 27

ratzip
ratzip

Reputation: 1671

def str = "32"

int num = str as Integer

Upvotes: 1

srinivasan
srinivasan

Reputation: 119

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.

Upvotes: -1

Berhanu Tarekegn
Berhanu Tarekegn

Reputation: 328

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

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

Upvotes: 0

Darth Shekhar
Darth Shekhar

Reputation: 125

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

Upvotes: 3

Sagar Mal Shankhala
Sagar Mal Shankhala

Reputation: 313

Groovy Style conversion:

Integer num = '589' as Integer

If you have request parameter:

Integer age = params.int('age')

Upvotes: 1

Aakarsh Gupta
Aakarsh Gupta

Reputation: 215

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

Upvotes: 3

Andrey
Andrey

Reputation: 141

also you can make static import

import static java.lang.Integer.parseInt as asInteger

and after this use

String s = "99"
asInteger(s)

Upvotes: 7

Electrons_Ahoy
Electrons_Ahoy

Reputation: 38643

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.

Upvotes: 32

Esko
Esko

Reputation: 29375

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

def number = '123' as int

Upvotes: 75

Michael Easter
Michael Easter

Reputation: 24498

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

Upvotes: 19

Related Questions