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还添加了所有那些返回true
的String
,如果所讨论的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")
希望这可以帮助