Reputation: 63134
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
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
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
}
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
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
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
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
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
Reputation: 313
Groovy Style conversion:
Integer num = '589' as Integer
If you have request parameter:
Integer age = params.int('age')
Upvotes: 1
Reputation: 215
toInteger()
method is available in groovy, you could use that.
Upvotes: 3
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
Reputation: 38643
As an addendum to Don's answer, not only does groovy add a .toInteger()
method to String
s, 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
Reputation: 29375
Several ways to do it, this one's my favorite:
def number = '123' as int
Upvotes: 75
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