如何在Groovy中获取子列表值

时间:2014-10-14 00:04:09

标签: groovy

我有以下方法,我试图比较两个文本文件。

所以基本上我需要将substring行的sourceFilegeneratedFile进行比较。 在这里,我正在努力获得subList的价值。因为我想在获取值后做子串。

def FileCompare(String sourceFile, String generatedFile) {
   def firstList = new File(sourceFile).readLines()
   def m = 0
   def n = 1

   new File(generatedFile).readLines().each {
      println  firstList.subList(m,n)
      println  it.substring(0,8)
      m = m + 1
      n = n + 1

      // more coding to be done for compare  
   }
}

高于println firstList.subList(m,n)我可以看到结果为[2104808660 COMPANYX]

但意图是substring那个。

的资源文件

2011070620110707             COMPANYX            
2104808660                   COMPANYX
2104808662                   COMPANYX
2114454303                   COMPANYX
2114454303                   COMPANYX
00000004

generatedFile

2011070620110707             COMPANYX            
2104808665                   COMPANYX
2104808661                   COMPANYX
2114454301                   COMPANYX
2114454301                   COMPANYX
00000005

3 个答案:

答案 0 :(得分:2)

所以你要从两个文件中提取每行的前8个字符?看看例子:

def firstList = new File(sourceFile).readLines()

new File(generatedFile).readLines().eachWithIndex { line, index ->

    println  firstList[index].substring(0,8)
    println  line.substring(0,8)

    // ...or even shorter with ranges:

    println  firstList[index][0..7]
    println  line[0..7]

    // more coding to be done for compare  
}

答案 1 :(得分:2)

您可以做的是将两个文件的内容读取到两个列表并比较列表:

def toList(filename) {
   new File(sourceFile).readLines().collect { it[0..7] }
}

def sourceList = toList(sourceFile)
def generatedList = toList(generatedFile)

//comparison

答案 2 :(得分:1)

如果您不需要保存文件行以执行其他任务,那么您可以试试这个。

[new File(sourceFile).readLines(), new File(generatedFile).readLines()]
    .transpose().each{ line ->

    println line[0][0..7]  //Line from sourceFile
    println line[1][0..7]  //Line from generatedFile

    // compare code here.
}