Groovy:字符串到整数数组

Groovy:字符串到整数数组,groovy,Groovy,我在Groovy中编码,我有一个字符串参数“X”,如下所示: 899-921-876-123 现在,我成功地通过 replaceAll("-", "") 现在我想把这个字符串分成几个独立的数字-一个数组,比如(8,9,9…),用这些数字进行一些计算。但不知何故,我无法拆分()这个字符串,同时使其成为整数,如下所示: assert X.split("") def XInt = Integer.parseInt(X) 因此,当我尝试以下方法时: def sum = (6* X[0]+ 5 *

我在Groovy中编码,我有一个字符串参数“X”,如下所示:

899-921-876-123
现在,我成功地通过

replaceAll("-", "")
现在我想把这个字符串分成几个独立的数字-一个数组,比如(8,9,9…),用这些数字进行一些计算。但不知何故,我无法拆分()这个字符串,同时使其成为整数,如下所示:

assert X.split("")
def XInt = Integer.parseInt(X)
因此,当我尝试以下方法时:

def  sum = (6* X[0]+ 5 * X[1] + 7 * X[2])
我得到一个错误“找不到匹配的方法int#getAt(int)。请检查声明的类型是否正确以及该方法是否存在。”或“找不到匹配的方法int#multiply(java.lang.String)。请检查声明的类型是否正确以及该方法是否“如果我没有将其转换为整数…”


你知道我如何计算这个字符串中的不同数字吗?

假设你已经有了一个数字字符串:

"123"*.toLong() // or toShort(), toInteger(), ...
// ===> [1, 2, 3]

假设您已经有了一系列数字:

"123"*.toLong() // or toShort(), toInteger(), ...
// ===> [1, 2, 3]
replaceAll
删除所有非数字
collect
迭代iterable并将所有元素转换为
int
s
字符串
是其字符的一个iterable

replaceAll
删除所有非数字
collect
迭代iterable并将所有元素转换为
int
s

字符串
是它的一组字符

如果发现@cfrick接近最常规的解决方案

这使得它完整:

def n = "899-921-876-123".replaceAll("-", "")
print n*.toInteger()

如果发现@cfrick,那么它将是最优秀的解决方案

这使得它完整:

def n = "899-921-876-123".replaceAll("-", "")
print n*.toInteger()

拆分
是不必要的,而
字符串
是它的一个可替换字符,因此您可以直接使用
收集
。如果您只有个位数,那么转换为
long
就有点过头了,而使用Groovy魔法将
转换为…
会更好@吸血鬼谢谢,更改的itA
split
是不必要的,一个
String
是它的一个可替换字符,因此您可以直接使用
collect
。如果您只有个位数,那么转换为
long
就有点过头了,而使用Groovy魔法将
转换为…
会更好@吸血鬼谢谢,改变了它谢谢你的建议,但“X”是一个参数,可以动态更新,我给你的数字就是一个例子。因此,当我这样做时:def X=X.replaceAll(/\D++/,'').collect{it as int}它给了我一个错误“不允许在类java.lang.Object上收集方法”,之后我如何对它进行任何计算?
不允许
听起来很奇怪,你被困在沙箱中了吗?我给你的是没有沙箱的纯Groovy
String#replaceAll
返回一个
String
字符串,在该字符串上进行替换,如果没有沙箱阻止,您应该能够调用
collect
。或者您的
X
实际上不是
字符串吗?
X.getClass()
给了您什么?考虑到
X
已经作为参数存在,我对我的示例进行了调整,并向您展示了如何使用它进行计算的示例。感谢您的建议,但“X”是一个参数,可以动态更新,我给您的数字就是一个示例。因此,当我这样做时:def X=X.replaceAll(/\D++/,'').collect{it as int}它给了我一个错误“不允许在类java.lang.Object上收集方法”,之后我如何对它进行任何计算?
不允许
听起来很奇怪,你被困在沙箱中了吗?我给你的是没有沙箱的纯Groovy
String#replaceAll
返回一个
String
字符串,在该字符串上进行替换,如果没有沙箱阻止,您应该能够调用
collect
。或者您的
X
实际上不是
字符串吗?
X.getClass()
给了您什么?我修改了我的示例,以考虑到
X
已经作为参数存在,并向您展示了如何使用它进行计算的示例。