我有一个表示整数值的String,并想将其转换为int。groovy中是否存在与Java的Integer.parseInt(String)相当的Integer.parseInt(String)?
String
int
Integer.parseInt(String)
Groovy可以很好地接受Java表单。如果你问是否有groovy方法,那么就有方法去Integer。
Integer
如下所示:
String s = "99" assert 99 == Integer.parseInt(s) Integer i = s as Integer assert 99 == i
有几种方法,这是我最喜欢的:
def number = '123' as int
使用toInteger()方法将String转换为Integer,例如:
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
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
作为String0的补充,groovy不仅为Strings添加了.toInteger()方法,还添加了toBigDecimal()、toBigInteger()、toBoolean()、toCharacter()、toDouble()、toFloat()、toList()和toLong()。
.toInteger()
toBigDecimal()
toBigInteger()
toBoolean()
toCharacter()
toDouble()
toFloat()
toList()
toLong()
同样地,groovy还将is*等价值添加到所有返回true的等价值中,如果所讨论的String可以解析为所讨论的格式。
is*
true
相关的GDK页面在这里。
我不确定它是否在groovy的最新版本中被引入(最初的答案相当古老),但现在您可以使用:
def num = mystring?.isInteger() ? mystring.toInteger() : null
或
def num = mystring?.isFloat() ? mystring.toFloat() : null
如果所提供的字符串不可靠,我建议使用浮点数甚至双精度数来代替整数。
你也可以进行静态导入
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")
希望这能有所帮助
这是另一种方法。如果你不喜欢异常。
def strnumber = "100" def intValue = strnumber.isInteger() ? (strnumber as int) : null
使用方法仍然应该是toInteger(),因为它并没有真正被弃用。
int value = '99'.toInteger()
String版本已弃用,但CharSequence是String实现的接口。因此,使用字符串是可以的,因为即使方法只能使用CharSequence,您的代码仍然可以工作。isInteger()也是一样
CharSequence
isInteger()
参考以下问题: 如何将字符串转换为CharSequence? < / p >
我评论说,因为这个方法被弃用的概念让我感到困惑,我想避免对其他人这样做。
在Groovy中将字符串转换为整数的更简单的方法如下…
String aa="25" int i= aa.toInteger()
现在“i”保存整数值。
def str = "32" int num = str as Integer