首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Groovy中获取subList值

如何在Groovy中获取subList值
EN

Stack Overflow用户
提问于 2014-10-14 00:04:08
回答 3查看 5.7K关注 0票数 0

在下面的方法中,我试图比较两个文本文件。

基本上,我需要将substring of sourceFile行与generatedFile进行比较。在这里,我正在为获得subList的价值而奋斗。因为我想在得到值之后再做子字符串。

代码语言:javascript
复制
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这一点。

sourceFile

代码语言:javascript
复制
2011070620110707             COMPANYX            
2104808660                   COMPANYX
2104808662                   COMPANYX
2114454303                   COMPANYX
2114454303                   COMPANYX
00000004

generatedFile

代码语言:javascript
复制
2011070620110707             COMPANYX            
2104808665                   COMPANYX
2104808661                   COMPANYX
2114454301                   COMPANYX
2114454301                   COMPANYX
00000005
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-14 06:46:23

您可以做的是将两个文件的内容读入两个列表,并比较这些列表:

代码语言:javascript
复制
def toList(filename) {
   new File(sourceFile).readLines().collect { it[0..7] }
}

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

//comparison
票数 2
EN

Stack Overflow用户

发布于 2014-10-14 06:29:44

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

代码语言:javascript
复制
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  
}
票数 2
EN

Stack Overflow用户

发布于 2014-10-14 15:12:59

如果不需要为其他任务保存文件行,则可以尝试以下操作。

代码语言:javascript
复制
[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.
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26350750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档