[英]Groovy: list.pop() does not work
我有一個清單的難點。 經過一些工作,我可以生成我的列表並生成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()
返回一個字符串數組,而不是一個List。 使用String.tokenize()
,或將split的結果linesAsList = lines.toString().split('\\t|\\r') as List
為一個列表,如linesAsList = lines.toString().split('\\t|\\r') as List
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.