Groovy String to int

时间:2009-11-11 06:49:41

标签: groovy

我有String表示整数值,并希望将其转换为int。是否有一个常见的Java Integer.parseInt(String)

12 个答案:

答案 0 :(得分:436)

使用toInteger()方法将String转换为Integer,例如

int value = "99".toInteger()

另一种避免使用弃用方法(见下文)的替代方案是

int value = "66" as Integer

如果您需要在执行转换之前检查String 是否可以转换,请使用

String number = "66"

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

Grails的

如果您要在Grails控制器中转换请求参数,那么还有更好的方法

Integer paramValue = params.int('paramName')

这种技术的一个很好的特性是它是安全的,即如果参数不能转换为Integer,它返回null而不是抛出异常。

弃用更新

在最新版本的Groovy中,不推荐使用其中一个toInteger()方法。以下内容摘自Groovy 2.4.4中的org.codehaus.groovy.runtime.StringGroovyMethods

/**
 * 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);
}

您可以强制使用类似以下内容的方法调用方法的不推荐版本:

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

就个人而言,我更喜欢:

int num = 66 as Integer

答案 1 :(得分:63)

有几种方法,这是我的最爱:

def number = '123' as int

答案 2 :(得分:29)

作为Don's answer的附录,groovy不仅会向.toInteger()添加String方法,还会添加toBigDecimal()toBigInteger(),{{ 1}},toBoolean()toCharacter()toDouble()toFloat()toList()

同样,如果可以将有问题的toLong()解析为相关格式,那么groovy还会向返回is*的所有人添加true个等价数。

相关的GDK页面is here.

答案 3 :(得分:24)

我不确定它是否是在最新版本的groovy中引入的(初始答案相当陈旧),但现在你可以使用:

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

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

如果提供的字符串不可靠,我建议使用浮点数甚至双精度数而不是整数。

答案 4 :(得分:15)

好吧,Groovy接受Java表单就好了。如果您询问是否有 Groovier 方式,可以转到Integer

这两个都显示在这里:

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

答案 5 :(得分:6)

你也可以进行静态导入

import static java.lang.Integer.parseInt as asInteger

此后使用

String s = "99"
asInteger(s)

答案 6 :(得分:3)

toInteger()方法在groovy中可用,您可以使用它。

答案 7 :(得分:1)

Groovy样式转换:

Integer num = '589' as Integer

如果您有请求参数:

Integer age = params.int('age')

答案 8 :(得分:1)

def str = "32"

int num = str as Integer

答案 9 :(得分:0)

这是另一种方式。如果你不喜欢例外。

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

答案 10 :(得分:0)

使用方法仍然是toInteger(),因为它并没有真正弃用。

int value = '99'.toInteger()

不推荐使用String版本,但CharSequence是String实现的接口。因此,使用String是可以的,因为即使该方法仅适用于CharSequence,您的代码仍然有效。同样适用于isInteger()

请参阅此问题以供参考: How to convert a String to CharSequence?

我评论说,因为这种方法弃用的概念让我感到困惑,我想为其他人避免这种想法。

答案 11 :(得分:-1)

在Groovy中将字符串转换为整数的更简单方法如下...

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

现在“ i”拥有整数值。