如何在Groovy中正确地将字符串转换为int

如何在Groovy中正确地将字符串转换为int,groovy,Groovy,首先,我知道问题“”及其回答。我是Groovy语言的新手,现在正在学习一些基础知识。将字符串转换为int的最简单方法似乎是: int value = "99".toInteger() 或: 这两种方法都有效,但对这些答案的评论让我感到困惑。正如groovy文档中所述,第一个methodString.toInteger()已被弃用。我还假设 String.toInteger() parseInt()利用了Java的核心特性 所以我的问题是:有没有合法的纯groovy方法来执行将字符串转换为int

首先,我知道问题“”及其回答。我是Groovy语言的新手,现在正在学习一些基础知识。将字符串转换为int的最简单方法似乎是:

int value = "99".toInteger()
或:

这两种方法都有效,但对这些答案的评论让我感到困惑。正如groovy文档中所述,第一个methodString.toInteger()已被弃用。我还假设

String.toInteger() parseInt()利用了Java的核心特性


所以我的问题是:有没有合法的纯groovy方法来执行将字符串转换为int这样的简单任务?

我可能错了,但我认为最groovy的方法应该是使用safe cast
“123”作为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")

如果要转换为数学表达式的字符串,而不仅仅是单个数字,请尝试:


String.toInteger
并没有被弃用,它只是被移动到了
CharSequence
(一个字符串就是一个CharSequence),谢谢@tim_yates,但据我所知,CharSequence版本也被弃用了。然而,我现在看到java.lang.Number的版本并没有被弃用,但现在我很清楚,当我的字符串变成一个数字时……是的,这是内部文档。该方法已被弃用,因为它已移动到不同的类。。。界面文档在这里:啊,现在有意义了:)所以我对清晰度或纯度的担心是不必要的,谢谢@koto祝贺您成功启动StackOverflow!=)这似乎有点离题了,因为OP询问了将字符串转换为int的简单方法。任何类型的求值都会带来很多安全问题。此外,脚本#evaluate不是执行您建议的操作的推荐方法,而是。
"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)
def toIntOrNull = { it?.isInteger() ? it.toInteger() : null }
assert 100 == toIntOrNull("100")
assert null == toIntOrNull(null)
assert null == toIntOrNull("abcd")
print evaluate("1+1"); // note that evalute can throw CompilationFailedException