我有一个字符串,表示一个整数值,并希望将其转换为int。groovy中是否有类似于Java的Integer.parseInt(String)?
当前回答
使用方法仍然应该是toInteger(),因为它并没有真正被弃用。
int value = '99'.toInteger()
String版本已弃用,但CharSequence是String实现的接口。因此,使用字符串是可以的,因为即使方法只能使用CharSequence,您的代码仍然可以工作。isInteger()也是一样
参考这个问题: 如何将字符串转换为CharSequence?
我评论说,因为这个方法被弃用的概念让我感到困惑,我想避免对其他人这样做。
其他回答
toInteger()方法在groovy中是可用的,您可以使用它。
我不确定它是否在groovy的最新版本中被引入(最初的答案相当古老),但现在您可以使用:
def num = mystring?.isInteger() ? mystring.toInteger() : null
or
def num = mystring?.isFloat() ? mystring.toFloat() : null
如果所提供的字符串不可靠,我建议使用浮点数甚至双精度数来代替整数。
使用toInteger()方法将字符串转换为整数,例如:
int value = "99".toInteger()
另一种避免使用已弃用方法(见下文)的方法是
int value = "66" as Integer
如果在执行转换前需要检查String是否可以转换,请使用
String number = "66"
if (number.isInteger()) {
int value = number as Integer
}
弃用更新
在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
这是另一种方法。如果你不喜欢异常。
def strnumber = "100"
def intValue = strnumber.isInteger() ? (strnumber as int) : null
有几种方法可以实现这一点。示例如下
a. return "22".toInteger()
b. if("22".isInteger()) return "22".toInteger()
c. return "22" as Integer()
d. return Integer.parseInt("22")
希望这能有所帮助