Groovy:字符串到整数数组

时间:2018-02-14 13:25:31

标签: groovy

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

899-921-876-123

现在我通过

成功删除了“ - ”
replaceAll("-", "")

现在我想把这个字符串分成单个数字 - 到一个数组,比如(8,9,9 ......),用这些数字进行一些计算。但不知何故,我不能拆分()这个String并同时使它成为一个整数:

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)。请检查声明的类型是否正确以及方法是否”如果我不将其转换为整数...

我知道如何才能对这个字符串的单独数字进行计算?

3 个答案:

答案 0 :(得分:2)

def X = '899-921-876-123'
def XInt = X.replaceAll(/\D++/, '').collect { it as int }
assert XInt == [8, 9, 9, 9, 2, 1, 8, 7, 6, 1, 2, 3]
assert 6* XInt[0]+ 5 * XInt[1] + 7 * XInt[2] == 6* 8+ 5 * 9 + 7 * 9

replaceAll删除所有非数字
collect遍历iterable并将所有元素转换为int s
String是其字符的可迭代

答案 1 :(得分:0)

鉴于你已经有了一串数字:

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

答案 2 :(得分:0)

如果发现@cfrick接近最流行的解决方案。

这使它完整:

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