我有一个String
表示整数值,并希望将其转换为int
.是否有一个常规的Java相当于Integer.parseInt(String)
?
Dón*_*nal 465
使用toInteger()
方法将转换String
到Integer
,如
int value = "99".toInteger()
Run Code Online (Sandbox Code Playgroud)
另一种方法是避免使用不推荐使用的方法(见下文)
int value = "66" as Integer
Run Code Online (Sandbox Code Playgroud)
如果您需要在执行转换之前检查是否String
可以转换,请使用
String number = "66"
if (number.isInteger()) {
int value = number as Integer
}
Run Code Online (Sandbox Code Playgroud)
如果您在Grails控制器中转换请求参数,则有更好的方法
Integer paramValue = params.int('paramName')
Run Code Online (Sandbox Code Playgroud)
这种技术的一个很好的特性是它是安全的,即如果参数不能转换为Integer
它,则返回null而不是抛出异常.
在最新版本的Groovy中,其中一种 toInteger()
方法已被弃用.以下内容摘自org.codehaus.groovy.runtime.StringGroovyMethods
Groovy 2.4.4
/**
* 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);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用类似以下内容强制调用方法的非弃用版本:
int num = ((CharSequence) "66").toInteger()
Run Code Online (Sandbox Code Playgroud)
就个人而言,我更喜欢:
int num = 66 as Integer
Run Code Online (Sandbox Code Playgroud)
Esk*_*sko 66
有几种方法,这是我的最爱:
def number = '123' as int
Run Code Online (Sandbox Code Playgroud)
Ele*_*hoy 29
作为附录唐的回答,不仅常规添加一个.toInteger()
方法String
S,它也增加了toBigDecimal()
,toBigInteger()
,toBoolean()
,toCharacter()
,toDouble()
,toFloat()
,toList()
,和toLong()
.
同样,如果问题可以被解析为有问题的格式,那么groovy还会is*
向所有返回的人添加等价数据.true
String
相关的GDK页面在这里.
小智 24
我不确定它是否是在最新版本的groovy中引入的(初始答案相当陈旧),但现在你可以使用:
def num = mystring?.isInteger() ? mystring.toFloat() : null
Run Code Online (Sandbox Code Playgroud)
要么
def num = mystring?.isFloat() ? mystring.toFloat() : null
Run Code Online (Sandbox Code Playgroud)
如果提供的字符串不可靠,我建议使用浮点数甚至双精度数而不是整数.
Mic*_*ter 15
好吧,Groovy接受Java表单就好了.如果你问是否有Groovier方式,有一种方法可以去Integer
.
两者都显示在这里:
String s = "99"
assert 99 == Integer.parseInt(s)
Integer i = s as Integer
assert 99 == i
Run Code Online (Sandbox Code Playgroud)
你也可以进行静态导入
import static java.lang.Integer.parseInt as asInteger
Run Code Online (Sandbox Code Playgroud)
并在此之后使用
String s = "99"
asInteger(s)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
296748 次 |
最近记录: |