Groovystring为int

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

使用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而不是抛出exception。

弃用更新

在最近的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 number = '123' as int 

作为Don的答案 ,groovy不仅添加了一个.toInteger()方法给String ,还增加了toBigDecimal()toBigInteger()toBoolean()toCharacter() toDouble()toFloat()toList() toFloat()toList()toLong()

同样,groovy还添加了所有那些返回trueString ,如果所讨论的String可以被parsing成所讨论的格式的话。

相关的GDK页面在这里。

我不确定它是否在最近版本的Groovy中引入(初始答案相当古老),但现在可以使用:

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

要么

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

如果提供的string不可靠,我推荐使用浮点数甚至双精度来代替整数。

那么,Groovy接受Java表单就好了。 如果你问是否有一个更方便的方法,有一种方法去Integer

这两个显示在这里:

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

你也可以静态导入

 import static java.lang.Integer.parseInt as asInteger 

并在此之后使用

 String s = "99" asInteger(s) 

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

Groovy风格转换:

 Integer num = '589' as Integer 

如果你有请求参数:

 Integer age = params.int('age') 

几种方法来实现这一点。 示例如下

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

希望这可以帮助