我在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)。请检查声明的类型是否正确以及方法是否”如果我不将其转换为整数...
我知道如何才能对这个字符串的单独数字进行计算?
答案 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()