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