number - groovy string to float




Groovy String to int (9)

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


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


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.


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

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

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.toFloat() : 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.


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

def number = '123' as int

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.


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
}

Grails

If you're converting a request parameter in a Grails controller, there's an even better way

Integer paramValue = params.int('paramName')

One of the nice features of this technique is that it's safe, i.e. if the parameter cannot be converted to an Integer it returns null rather than throwing an exception.

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

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

def str = "32"

int num = str as Integer




groovy