如何在Groovy中以正确的方式将String转换为int

时间:2016-03-15 09:54:57

标签: groovy

首先,我知道问题' Groovy String to int'以及它的回应。我是Groovy语言的新手,现在正在玩一些基础知识。将String转换为int的最简单方法似乎是:

int value = "99".toInteger()

或:

int value = Integer.parseInt("99")

这些都有效,但对这些答案的评论让我感到困惑。第一种方法

String.toInteger()
已弃用,如groovy文档中所述。我还假设

Integer.parseInt()
使用核心Java功能。

所以我的问题是:是否有任何合法,纯粹的groovy 方法来执行将String转换为int这样一个简单的任务?

2 个答案:

答案 0 :(得分:27)

我可能错了,但我认为最Grooviest 的方法是使用安全转换"123" as int

你真的有很多行为方式略有不同,而且都是正确的。

"100" as Integer // can throw NumberFormatException
"100" as int // throws error when string is null. can throw NumberFormatException
"10".toInteger() // can throw NumberFormatException and NullPointerException
Integer.parseInt("10") // can throw NumberFormatException (for null too)

如果您想获得null而不是异常,请使用已链接的答案中的配方。

def toIntOrNull = { it?.isInteger() ? it.toInteger() : null }
assert 100 == toIntOrNull("100")
assert null == toIntOrNull(null)
assert null == toIntOrNull("abcd")

答案 1 :(得分:0)

如果您想转换一个数学表达式的字符串,而不仅仅是一个数字,请尝试groovy.lang.Script.evaluate(String expression)

print evaluate("1+1"); // note that evalute can throw CompilationFailedException