Groovy String to int

Groovy String to int

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


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

1
int value ="99".toInteger()

另一种方法是避免使用不推荐使用的方法(见下文)

1
int value ="66" as Integer

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

1
2
3
4
5
String number ="66"

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

Grails的

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

1
Integer paramValue = params.int('paramName')

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

弃用更新

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * 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);
}

您可以使用类似以下内容强制调用方法的非弃用版本:

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

就个人而言,我更喜欢:

1
int num = 66 as Integer


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

1
def number = '123' as int


作为Don答案的附录,不仅groovy将.toInteger()方法添加到String s,它还添加toBigDecimal()toBigInteger()toBoolean()toCharacter()toDouble()toFloat()toList()toLong()

同样,如果可以将所讨论的String解析为所讨论的格式,那么groovy还会向返回true的所有人添加is*等价物。

相关的GDK页面在这里。


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

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

要么

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

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


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

两者都显示在这里:

1
2
3
4
String s ="99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i


你也可以进行静态导入

1
import static java.lang.Integer.parseInt as asInteger

并在此之后使用

1
2
String s ="99"
asInteger(s)


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


实现这一目标的几种方法。实例如下

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

希望这可以帮助


1
2
3
def str ="32"

int num = str as Integer

Groovy样式转换:

1
Integer num = '589' as Integer

如果您有请求参数:

1
Integer age = params.int('age')

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

1
int value = '99'.toInteger()

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

请参阅此问题以供参考:
如何将String转换为CharSequence?

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


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

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


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

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

现在"我"拥有整数值。