Werten aus dem Text ausliesten

Adriano10

Bekanntes Mitglied
Java:
        String var = "Artikelnummer: 20023269, Auftragsnummer: 0104016427, Stornierungsgrund: (Artikel nicht mehr benötigt), Bewegungsklasse: 01, " +
                "Warenart: LEER, Netto-Wert: 0,95";
wie kann ich ein Programm schreiben, welches welches aus diesem Text die Werte ausliest?

z. b String Auftragsnummer = "0104016427";

Vielen Dank im Voraus
 
K

kneitzel

Gast
Die erste Frage ist: Wie ist der Aufbau? ist der immer gleich? Was für Werte kann es alles geben?

Davon abhängig kann man dann alles auswerten.

Wenn man es ganz allgemein machen möchte, dann wären es ja Key: Value Paare, die per "," getrennt sind. Ein erster Ansatz kann dann natürlich sein, dass man erst bei , und dann bei : jeweils ein split macht.
Aber ggf. kann auch beim Wert ein "," vorkommen. Ggf. gibt es dann Reglungen wie: Es wird der Wert dann in ( ) gesetzt. Das kann man dann auch auswerten. Dann geht man zur Not einfach den String Zeichen für Zeichen durch und dann kann man sich ein Ablaufdiagramm malen.

Es fängt an mit Keys - Zeichen landen im Key bis ein : gefunden wird.
Dann ist man beim Value, zeichen landen beim Value. Wenn eine ( gefunden wird, wird bis zur ) gelesen, ansonsten gibt es die Übergänge:
Ende des Strings -> fertig
, -> Key

Das wären universelle Ansätze.

Aber man kann es auch ganz trivial machen. Wenn man die Artikelnummer haben will, dann sucht man, wo im String "Artikelnummer:" zu finden ist. Und dann von da bis zum nächsten , ist dann der Wert.

Und wie immer bei Strings: Reguläre Ausdrücke sind immer ein Weg, den man gehen kann.
 

Adriano10

Bekanntes Mitglied
Die erste Frage ist: Wie ist der Aufbau? ist der immer gleich? Was für Werte kann es alles geben?

Davon abhängig kann man dann alles auswerten.

Wenn man es ganz allgemein machen möchte, dann wären es ja Key: Value Paare, die per "," getrennt sind. Ein erster Ansatz kann dann natürlich sein, dass man erst bei , und dann bei : jeweils ein split macht.
Aber ggf. kann auch beim Wert ein "," vorkommen. Ggf. gibt es dann Reglungen wie: Es wird der Wert dann in ( ) gesetzt. Das kann man dann auch auswerten. Dann geht man zur Not einfach den String Zeichen für Zeichen durch und dann kann man sich ein Ablaufdiagramm malen.

Es fängt an mit Keys - Zeichen landen im Key bis ein : gefunden wird.
Dann ist man beim Value, zeichen landen beim Value. Wenn eine ( gefunden wird, wird bis zur ) gelesen, ansonsten gibt es die Übergänge:
Ende des Strings -> fertig
, -> Key

Das wären universelle Ansätze.

Aber man kann es auch ganz trivial machen. Wenn man die Artikelnummer haben will, dann sucht man, wo im String "Artikelnummer:" zu finden ist. Und dann von da bis zum nächsten , ist dann der Wert.

Und wie immer bei Strings: Reguläre Ausdrücke sind immer ein Weg, den man gehen kann.
ja , Aufbau ist immer gleich.

Ich wollte mit Split split(",") machen, aber double Werte machen mir Probleme, da sie auch komma enthalten
 

Robert Zenz

Top Contributor
ja , Aufbau ist immer gleich.

Ich wollte mit Split split(",") machen, aber double Werte machen mir Probleme, da sie auch komma enthalten
Dann musst du eben nach Komma mit folgendem Leerzeichen abteilen, und hoffen dass der Text nie so etwas enthaelt (wenn doch hast du verloren und musst einen aufwaendigeren Parser schreiben, sowas wie "nur abteilen nach einem Komma welches von einem Doppelpunkt gefolgt wird").
 

Adriano10

Bekanntes Mitglied
Java:
    public static void main(String[] arg) {
        String var = "Artikelnummer: 20023269, Auftragsnummer: 0104016427, Stornierungsgrund: (Artikel nicht mehr benötigt), Bewegungsklasse: 01, " +
                "Warenart: LEER, Netto-Wert: 0,95, Firma: Brander Landtechnik, Kundennummer: 0005054785";
        String Artikelnummer = "";
        String Auftragsnummer = "";
        String Stornierungsgrund = "";
        String Bewegungsklasse = "";
        String Warenart = "";
        String Netto_Wert = "";
        String Firma = "";
        String Kundennummer = "";
        String[] array = var.split(":");
        Artikelnummer= array[0];
        Auftragsnummer = array[2].substring(0, array[2].indexOf(","));
        Stornierungsgrund = array[3].substring(0, array[3].indexOf(","));
        Bewegungsklasse = array[4].substring(0, array[4].indexOf(","));
        Warenart = array[5].substring(0, array[5].indexOf(","));
        int count = 0;
        for(int i = 0; i < array[6].length(); i++){
            if(array[6].charAt(i) >= 'a' && array[6].charAt(i) <= 'z' || array[6].charAt(i) >= 'A' && array[6].charAt(i) <= 'Z'){
                count = i;
                break;
            }
        }
        Netto_Wert = array[6].substring(1, count - 2);
        Firma = array[7].substring(1, array[7].indexOf(","));
        Kundennummer = array[8];
    }

ich hab so gelöst, falls jemand bessere Idee hätte, würde mir sehr geholfen
 

Flown

Administrator
Mitarbeiter
Ich würde das anders herum machen. Erst die nach Komma splitten und dann nach Doppelpunkt (das ganze nur einmal):
Java:
public void foo() {
  String var = "Artikelnummer: 20023269, Auftragsnummer: 0104016427, Stornierungsgrund: (Artikel nicht mehr benötigt), Bewegungsklasse: 01, " +
          "Warenart: LEER, Netto-Wert: 0,95, Firma: Brander Landtechnik, Kundennummer: 0005054785";
  Map<String, String> kv = parseCSVKeyValues(var);
  String artikelnummer = kv.getOrDefault("Artikelnummer", null);
  String auftragsnummer = kv.getOrDefault("Auftragsnummer", null);
  //...
}

private Map<String, String> parseCSVKeyValues(String msg) {
  return Pattern.compile(",\\s+")
          .splitAsStream(msg)
          .map(kv -> kv.split(":\\s+"))
          .collect(Collectors.toMap(kv -> kv[0], kv -> kv[1]));
}
Alternativ:
Java:
private Map<String, String> parseCSVKeyValues(String msg) {
  Map<String, String> keyValues = new HashMap<>();
  for (String kvs : msg.split(",\\s+")) {
    String[] kv = kvs.split(":\\s+");
    keyValues.put(kv[0], kv[1]);
  }
  return keyValues;
}
 
Zuletzt bearbeitet:

Adriano10

Bekanntes Mitglied
Ich würde das anders herum machen. Erst die nach Komma splitten und dann nach Doppelpunkt (das ganze nur einmal):
Java:
public void foo() {
  String var = "Artikelnummer: 20023269, Auftragsnummer: 0104016427, Stornierungsgrund: (Artikel nicht mehr benötigt), Bewegungsklasse: 01, " +
          "Warenart: LEER, Netto-Wert: 0,95, Firma: Brander Landtechnik, Kundennummer: 0005054785";
  Map<String, String> kv = parseCSVKeyValues(var);
  String artikelnummer = kv.getOrDefault("Artikelnummer", null);
  String auftragsnummer = kv.getOrDefault("Auftragsnummer", null);
  //...
}

private Map<String, String> parseCSVKeyValues(String msg) {
  return Pattern.compile(",\\s+")
          .splitAsStream(msg)
          .map(kv -> kv.split(":\\s+"))
          .collect(Collectors.toMap(kv -> kv[0], kv -> kv[1]));
}
Alternativ:
Java:
private Map<String, String> parseCSVKeyValues(String msg) {
  Map<String, String> keyValues = new HashMap<>();
  for (String kvs : msg.split(",\\s+")) {
    String[] kv = kvs.split(":\\s+");
    keyValues.put(kv[0], kv[1]);
  }
  return keyValues;
}
cool, vielen Dank
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
T PDF-Formula (XFDF) via Mail - Betreff mit Werten aus PDF-Formular ergänzen Java Basics - Anfänger-Themen 2
Csircc Neuer Array mit geringerer Länge und selben werten. Java Basics - Anfänger-Themen 2
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
Henri Vergabe von undeklarieten Werten Java Basics - Anfänger-Themen 64
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
E OOP Array anlegen mit unterschiedlichen Werten Java Basics - Anfänger-Themen 8
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
M Speichern von Werten in Array Java Basics - Anfänger-Themen 1
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
M Übergabe von Werten Java Basics - Anfänger-Themen 10
Bregedur Methoden Matcher und Pattern bei sich wiederholenden Werten Java Basics - Anfänger-Themen 1
M Java Arrays mit Werten initialisieren Java Basics - Anfänger-Themen 3
G Interpolation von Werten im 3D-Raum Java Basics - Anfänger-Themen 3
N Zählen von Rationalen Werten eines Arrays Java Basics - Anfänger-Themen 10
R Objekt erstellen - Attribute mit mehreren Werten Java Basics - Anfänger-Themen 1
F JButton [] mit Werten hinterlegen Java Basics - Anfänger-Themen 10
L Frage zur Rückgabe von Werten bei Methoden Java Basics - Anfänger-Themen 4
L Array mit Werten belegen Java Basics - Anfänger-Themen 7
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
J JFrame ausgabe von Werten Java Basics - Anfänger-Themen 9
F Array mit Scanner-Werten Java Basics - Anfänger-Themen 4
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
J ArrayList<int[]> wird beim hinzufügen von werten komplett überschrieben warum? Java Basics - Anfänger-Themen 1
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
C Arrays zusammenfügen mit abwechselnden Werten Java Basics - Anfänger-Themen 3
F Map nach Werten durchsuchen Java Basics - Anfänger-Themen 3
S Suche richtigen Typ für Variabel mit den Werten (neu, gebraucht, beschädigt) Java Basics - Anfänger-Themen 7
V Methoden Matrix als 1D Array mit Werten füllen Java Basics - Anfänger-Themen 12
T Liste mit 2 Werten pro Eintrag Java Basics - Anfänger-Themen 9
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
M Ausgeben eines 2D Arrays mit int UND String werten - BLUEJ! Java Basics - Anfänger-Themen 4
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
M Mit Werten aus Arrays in anderen Methoden rechnen? Java Basics - Anfänger-Themen 3
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
L Array - Nach 2 gleichen Werten stoppen Java Basics - Anfänger-Themen 5
N mit Werten aus einer mysql datenbank in java rechnen Java Basics - Anfänger-Themen 17
X Methoden Vertauschen von 2 Werten eines Arrays Java Basics - Anfänger-Themen 13
J Subtraktion von double Werten Java Basics - Anfänger-Themen 3
P Objekt mit Werten aus Array füllen Java Basics - Anfänger-Themen 10
P Vererbung Auslesen von Werten einer ArrayList Java Basics - Anfänger-Themen 30
S Erfahrungswerte von schnelles durchlaufen von Listen mit 2 Werten Java Basics - Anfänger-Themen 10
T Externes Programm mit Werten versorgen Java Basics - Anfänger-Themen 4
T Ausgabe von Werten des Typs double Java Basics - Anfänger-Themen 8
J Zuweisung von gesicherten Werten funktioniert nicht Java Basics - Anfänger-Themen 9
P Methoden Übergabe von Werten Java Basics - Anfänger-Themen 7
D Regex mit Werten aus txt Datei Java Basics - Anfänger-Themen 2
C Mit if Überprüfung von drei Werten durchführen Java Basics - Anfänger-Themen 6
C Comparator mit Double Werten? Java Basics - Anfänger-Themen 12
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
T Hashmap mit mehreren Werten Java Basics - Anfänger-Themen 9
B Zweidimensionales Array mit boolean Werten Java Basics - Anfänger-Themen 3
F grafische Anzeige von Werten Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
U Datentypen Ungenauigkeit von Double Werten Java Basics - Anfänger-Themen 5
L Datentypen Methode zum Abspeichern von Variablen mit größeren int-Werten Java Basics - Anfänger-Themen 6
Rudolf Datentypen Vectorliste mit Werten in zufälliger Anordnung Java Basics - Anfänger-Themen 5
1 Ständige Abfrage von Werten Java Basics - Anfänger-Themen 19
M Image zeichenen mit Double Werten Java Basics - Anfänger-Themen 4
J double-Array mit Werten von Methode füllen und an andere Methode übergeben Java Basics - Anfänger-Themen 3
S Minimum von 5 Werten Java Basics - Anfänger-Themen 6
H Checkbox mit Werten hinterlegen Java Basics - Anfänger-Themen 4
P Initialisierung einer 5*5 Matrix mit best. Werten Java Basics - Anfänger-Themen 2
M property mit mehreren werten Java Basics - Anfänger-Themen 3
F Speicherung von Werten?!? Java Basics - Anfänger-Themen 7
L Array - Eingabe von Werten Java Basics - Anfänger-Themen 2
S mit Werten aus 2D-Array rechnen Java Basics - Anfänger-Themen 32
C ArrayList mit Integer Werten Java Basics - Anfänger-Themen 6
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
S Elemente einer Liste mit true / false Werten Java Basics - Anfänger-Themen 3
X reele Zahlen zwischen zwei Werten addieren Java Basics - Anfänger-Themen 11
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
G art hashmap mit mehreren werten pro key Java Basics - Anfänger-Themen 2
S Ausgabe von Werten Java Basics - Anfänger-Themen 25
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
G Eintragen von Werten in die DB Java Basics - Anfänger-Themen 3
C Chart mit zwei Datenlinien und überlagernden Werten Java Basics - Anfänger-Themen 3
A Referenzen zu festen Werten machen? Java Basics - Anfänger-Themen 5
B 2d arrays mit Werten füllen Java Basics - Anfänger-Themen 22
M Problem bei der Übergabe von Werten Java Basics - Anfänger-Themen 7
W Funktionen mit Default werten Java Basics - Anfänger-Themen 10
A Probleme mit Ausgabe von Werten Java Basics - Anfänger-Themen 7
C Array mit int Werten füllen ( von z.B. 1 - x ) Java Basics - Anfänger-Themen 13
E ArrayList mit mehreren Werten Java Basics - Anfänger-Themen 10
E Array Werten Icons zuweisen Java Basics - Anfänger-Themen 3
F Wurfelspiel erstellen, bei dem mit Random-Werten gearbeitet Java Basics - Anfänger-Themen 3
J Einlesen von Werten in zwei Matrizen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben