Datei auslesen (nur bestimmte Stellen)

JavaNo0b

Mitglied
Guten Abend liebes Forum 🙂

ich bin absolut am verzweifeln!
Nehmen wir an, dass wir folgende .txt Datei haben:

Code:
1,2,-1001,TX:'Mittagsgericht Schüler'
1,2,1,CC:11/44/50
1,3,-1001,TX:'Mittagsgericht sonst'
1,3,1,CC:5/27.5/50
1,105,-1001,TX:'Zimtschnecke'
1,105,1,CC:3/5.4/50
1,302,-1001,TX:'Espresso'
1,302,1,CC:1/1.9/50
1,305,-1001,TX:'Cappuccino'
1,305,1,CC:2/5.4/50

Text Datei kurz an erster Position erklärt:
1,2,-1001,TX:'Mittagsgericht Schüler' ----------> 2 = Artikelnummer || Mittagsgericht Schüler = Artikelbezeichnung
1,2,1,CC:11/44/50 ----------> 2 = Artikelnummer || 11 = verkaufte Menge || 44 = Preis

Mein Vorhaben:
Ich würde diese Datei gerne einlesen.. Leider hab ich aktuell noch keinen Ansatz, wie es mir gelingen könnte, dass ich nur diese Informationen, die fett markiert sind, herauslesen und zwischenspeichern kann.
Könnte mir jmd einen kleinen Schubser geben bzw. mich in die richtige Richtung lotsen (möglichst über Streams hinaus 😀 ) - das grundsätzliche einlesen kann ich bereits, leider fehlt mir die Idee, wie es mir gelingen könnte mit einem bestimmten Algorithmus Daten zu lesen?

Ziel wäre es folgende Informationen aus dem Datensatz zu erhalten:
Code:
int[] serialNumbers;
String[] articleNames;
int[] sales;
double[] earnedCash;

serialNumber[0] = 2;
articleNames[0] = "Mittagsgericht Schüler";
sales[0] = 11;
earnedCash[44];
 
Wenn du eine Form von String lesen möchtest, dann sind Regex genau das Richtige für dich:

Java:
var text = "1,2,-1001,TX:'Mittagsgericht Schüler'\n" +
        "1,2,1,CC:11/44/50\n" +
        "1,3,-1001,TX:'Mittagsgericht sonst'\n" +
        "1,3,1,CC:5/27.5/50\n" +
        "1,105,-1001,TX:'Zimtschnecke'\n" +
        "1,105,1,CC:3/5.4/50\n" +
        "1,302,-1001,TX:'Espresso'\n" +
        "1,302,1,CC:1/1.9/50\n" +
        "1,305,-1001,TX:'Cappuccino'\n" +
        "1,305,1,CC:2/5.4/50";
var compile = Pattern.compile(".*?,(?<nr>\\d+),.*?,TX:'(?<name>.+)'[\n\r]+?.*?,.*?,.*?,CC:(?<amount>.*?)/(?<cash>.*?)/.*");
var matcher = compile.matcher(text);
while (matcher.find()) {
    System.out.printf("%s, %s, %s, %s%n", matcher.group("nr"), matcher.group("name"), matcher.group("amount"), matcher.group("cash"));
}
 
Vielen dank @Flown ! Bin leider erst heute dazu gekommen es zu testen, genau so hab ich es mir vorgestellt.

Hier ein Link, den ich recht nützlich fand, wenn noch jemand Interesse hat 🙂
https://www.kompf.de/java/regex.html



Wenn du eine Form von String lesen möchtest, dann sind Regex genau das Richtige für dich:

Java:
var text = "1,2,-1001,TX:'Mittagsgericht Schüler'\n" +
        "1,2,1,CC:11/44/50\n" +
        "1,3,-1001,TX:'Mittagsgericht sonst'\n" +
        "1,3,1,CC:5/27.5/50\n" +
        "1,105,-1001,TX:'Zimtschnecke'\n" +
        "1,105,1,CC:3/5.4/50\n" +
        "1,302,-1001,TX:'Espresso'\n" +
        "1,302,1,CC:1/1.9/50\n" +
        "1,305,-1001,TX:'Cappuccino'\n" +
        "1,305,1,CC:2/5.4/50";
var compile = Pattern.compile(".*?,(?<nr>\\d+),.*?,TX:'(?<name>.+)'[\n\r]+?.*?,.*?,.*?,CC:(?<amount>.*?)/(?<cash>.*?)/.*");
var matcher = compile.matcher(text);
while (matcher.find()) {
    System.out.printf("%s, %s, %s, %s%n", matcher.group("nr"), matcher.group("name"), matcher.group("amount"), matcher.group("cash"));
}
 

Neue Themen


Zurück
Oben