Groovy 如何将数字与';分开';?

Groovy 如何将数字与';分开';?,groovy,Groovy,我有这样的代码: def a = [".15", "7..", "402", "..3"] c = a.permutations() as List println c[0].join() 输出7…3402.15。在这个例子中,我只需要得到数字,即73402,15。更值得注意的是,我需要这些总和,即在我们的示例中,我们将得到7,9,6 如何在groovy中实现这一点?类似的东西? 这不是很好看的代码,但它应该传达的意图 [".15", "7..", "402", "..3"].permutat

我有这样的代码:

def a = [".15", "7..", "402", "..3"]
c = a.permutations() as List
println c[0].join()
输出
7…3402.15
。在这个例子中,我只需要得到数字,即
73402,15
。更值得注意的是,我需要这些总和,即在我们的示例中,我们将得到
7,9,6

如何在groovy中实现这一点?

类似的东西? 这不是很好看的代码,但它应该传达的意图

[".15", "7..", "402", "..3"].permutations()*.join()*.replaceAll('\\.\\.*',',')*.split(',')*.collect{it.getChars().inject(0){a,b->a+ (new Integer(b as String))}}
编辑:更改代码,使其适用于整个排列数组,而不仅仅是一个元素。类型转换很笨拙,@tim_yates代码更干净

该守则的运作如下:

对于排列的每个子数组:

  • 将数组连接到一个字符串
  • 用一个
    • 将此字符串中的所有字符转换为整数,并使用
      inject
      方法将它们相加

现在,我不知道这是否是您需要的,因为我不知道最初的问题。

作为快速响应,一个解决方案是:

def result = [".15", "7..", "402", "..3"].permutations()*. 
  join()*.                                 // Join each permutation together into a single string
  split( '\\.' )*.                         // Split each of these Strings on the '.' char
  findAll()*.                              // Remove empty elements (where we had '..' before splitting)
  collect { it -> it*.toInteger().sum() }  // Convert each String to List<Integer> and sum
def result=[“.15”、“7..”、“402”、“0.3”]。排列()。
join()*。//将每个排列合并为一个字符串
拆分(“\\”)*.//在“.”字符上拆分这些字符串
findAll()*。//删除空元素(在拆分之前有“..”的位置)
collect{it->it*.toInteger().sum()}//将每个字符串转换为List和sum

@ashburaczenko:ha。。不完全是。。这是我的疑问。我正在用Top coder解决一个难题。你至少能给我一个线索告诉我怎么做。。将对其进行编码:)@ashburaczenko:我可以对其进行迭代并将其放入列表中,直到找到一个
并求和。但我想对于这种情况会有一些更常规的解决方案;)+你的想法很好。但是你能解释一下你在做什么吗?