我有String
表示整数值,并希望将其转换为int
。是否有一个常见的Java Integer.parseInt(String)
?
答案 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控制器中转换请求参数,那么还有更好的方法
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”拥有整数值。