java - Groovy:list.pop() 不起作用

标签 java list groovy

我有一个带有列表的粘着点。经过一番工作后,我可以生成列表并生成 xml 结果。 但在我的列表中是带有制表符或换行符的条目(最后一个条目)

如果我执行脚本,结果如​​下:

[100, 0100045395, Kurzstrasse, 0502028767496, , 8050, 100, Zürich, 05.07.2010, 
100, 0100045395, 0400053113, 0000356988, , TPS, ZL1, 1549820, 02.06.2010, 
100, 0100045395, 0400053113, 0000356988, , TPS, ZL1, 1549820, 02.06.2010, 
]

首先,我将尝试使用 pop() 删除最后一个换行符 但我总是收到这样的消息:

Caught: groovy.lang.MissingMethodException: No signature of method:   Ljava.lang.String;.pop() is applicable for argument types: () values: []
    Possible solutions: sum(), dump(), min(), max(), any(), sort()
       at auslesenzwei.xmlGenerieren(auslesenzwei.groovy:44)
        at auslesenzwei.run(auslesenzwei.groovy:37)

我做错了什么?

代码:

 import groovy.util.CharsetToolkit;
 import java.lang.Object

 //Generate pathname
 //Pfadname generiert für einfacheres ändern des Speicherortes
 def pathname = "C:/mySupport-eclipse/trackandtrace.txt"
 //Define Error Status
 //Error Status definieren für Weiterverabeitung in mySupport
 int errorCode = 0
 def errorMessage = ""

 def linesAsList = []


 def bsknr = "0100045395"
 //Define new File
 //Neue Datei definieren
 def file = new File(pathname)

 if(!file.exists())
{
    errorCode = 1
    errorMessage = "File not found"
    out_xml = xmlGenerieren()   
}
else
{
    //Read Roews and look for BSK Number, split after tab
    //Zeilen einlesen und nach der BSK Nummer suchen, nach dem Tabulator trennen
    def lines = file.filterLine { 
        line -> line ==~ /.*\t${bsknr}\t.*/ 

        }
    //Split the result after tab and enter, give back as String
    //Das Ergebnis aufteilen bei Tabulator und Enter und zugleich als String zurückgeben
    linesAsList = lines.toString().split('\t|\r')
    xmlGenerieren(linesAsList)
        //println linesAsList
    }

 def xmlGenerieren(givenlist) {
     def writer = new StringWriter()
     def builder = new groovy.xml.MarkupBuilder(writer)
        //givenlist.pop()
     println givenlist
     def listsize = givenlist.size()


    //Test if is empty
//Prüfen ob ein Ergebnis gefunden wurde
if (listsize == 0)
{
    builder.result() 
    {
        entry(wert:"0")
        {
            paketnr("(empty)")
        }
    }
    println writer.toString()
    errorCode = 0
    }
else {


//i = listsize / 8
//println i

}

}

感谢您的帮助

最佳答案

String.split()返回字符串数组,而不是列表。使用String.tokenize() ,或者将 split 的结果转换为类似 linesAsList = lines.toString().split('\t|\r') as List 的列表.

关于java - Groovy:list.pop() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302124/

相关文章:

java - 如果 GUI 是在构造函数中定义的,如何添加或删除 jtable?

r - 如何取消列出空间对象并在 R 中完全绘制

variables - Jenkins Groovy 并行变量不工作

jenkins - 从 jenkinsfile 执行 groovy 脚本时出现异常 groovy.lang.MissingPropertyException : No such property: args for class: groovy. lang.Binding

python - 从磁盘读取列表会比加载字典更好吗?

java - 如何生成包含涵盖代码中每个方法的测试用例列表的报告?

Java变量对象搜索列表

java - Scala 中的类、对象、特征、密封特征

java基本工资计划

java - 用列表数据填充一个数组并添加一个元素