我嘗試替換列表中的某個結果。但它並沒有取代這種跡象。Groovy:在列表中替換併爲每一行創建一個列表
linesAsList = lines.toString().split('\t|\r')
linesAsList.toString().replaceAll(("'"),("")) as List
這是實際的結果是: [03.10.2011, '993413376204340783',13087,0400102134,0060000390]
我一直在尋找這樣的:[03.10.2011,993413376204340783,13087,0400102134, 0060000390]
下一步是,當程序找到多個結果時,它應該在一個多重列表中?
像這樣:
[03.10.2011, '993413376204340783',13087,0400102134,0060000390] [03.10.2011, '993413376204340783',13087,0400102134,0060000390]
是這樣真的可能嗎?我該怎麼做。在他們之後,我正在構建一個用於創建xml的循環。
如果你需要它,這是整個代碼:
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 = "0060000390"
//Define new Fiel
//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')
linesAsList.toString().replaceAll(("'"),("")) as List
//Give date, sendnr. and date
//Liefere nur Datum, Sendungsnummer und Gewicht
linesAsList = linesAsList[0,1,2,4,5,6]
xmlGenerieren(linesAsList)
//println linesAsList
}
def xmlGenerieren(List linesAsList) {
def writer = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(writer)
linesAsList.pop()
println linesAsList
def listsize = linesAsList.size()
//Test if is empty
//Prüfen ob gültige Ergebnise gefunden wurden
if (listsize >= 5 || listsize %5)
{
long i = 0
long anzEintraege = listsize % 5
while (i <= anzEintraege)
{
builder.result()
{
entry(wert:i)
{
paketnr(linesAsList[1])
}
}
println writer.toString()
errorCode = 0
i++
}
}
else {
println listsize
//i = listsize/8
//println i
}
}
輸入的例子:
Filterkriterien:Frachtfuehrer: POSTCH Auftraggeber: Testfirma Zeitraum: 01.10.2011 - 31.10.2011
ZeitraumVonBis PaketNr Gewicht Gebühr Lierf. Nr KundenNr AuftragsNr Name1 Name2 Str Plz Ort Lkz Versandart
03.10.2011 '993413376204340260' 1,000 0,00 0400102100 0052662182 John Doe Streetname 10 3018 Bern CH Priority SI
03.10.2011 '993413376204340783' 13,087 0,00 0400102134 0060000390 Swisscom Schweiz AG Johnny Doe Streetname 51 3050 Bern CH Priority SI
有條目
不給我們幾個例子輸入文件行? –
當然,我已經更新了帖子末尾 – CollinG