Datentypen Strings nach Muster auslesen und verarbeiten

MichaFL123

Mitglied
Hallo,

ich habe die schöne Aufgabe bekommen eine Textdatei auszulesen (1 Zeile).

Dies klappt auch soweit. Die eingelesene Zeile Zerlege ich mit:
Java:
     String[] result = line.split("'");

In ein Array-Feld. Das Array durchlaufe ich mit:
Java:
     for (int x=0; x<result.length; x++)

Der Inhalt des Arrays ist jedesmal unterschiedlich (einige Beispiele):

ArrayIndex Inhalt

5 NAD+MS+9900948990008::293
6 NAD+MR+9903104340002::293
9 LOC+172+DE00094814770REL00050010400027755::89
10 DTM+9:20110101:102
16 PIA+5+1-1?:1.8.0:SRW
17 QTY+87:32115

Diese Inhalte muss ich jetzt je nach Beginn unterschiedlich verarbeiten:

Bei Index 5 muss ich 9900948990008 in eine Stringvariable msg_sender schreiben.
Bei Index 6 muss ich 9903104340002 in eine Stringvariable msg-emf schreiben.
Bei Index 9 soll der String DE00094814770REL00050010400027755 in eine Stringvariable geschrieben werden.
Bei Index 10 den Inhalt 20110101 in einen String geschrieben werden.
Bei Index 16 soll der String 1.8.0 umgewandelt in 1.80.0 (aber nur wenn der Inhalt 1.8.X lautet) in einem String gespeichert werden.
Index 17 soll ich die 87 und die 32115 extrahieren und jeweils in Stringvariablen speichern.

Ich habe schonmal geschaut aber auf diese verschiedenen Verarbeitungsanweisungen zu reagieren ist ziemlich schwierig.

Für mich ist besonders schwierig das prüfen des Strings auf ein Kennzeichen wie z.B: NAD+MS+ und dann das Auslesen des Teilstrings 9900948990008 ohne ::293.

Kann mir jemand da helfen? (mit regex kenne ich mich nur sehr oberflächlich aus :oops:)

Vielen Dank im Voraus an alle Poster :)
 
B

bygones

Gast
ins blaue geschossen: [c]\+(\\d+):[/c] als regex und dann beim matcher die gruppierung holen....

hilft das oder fehlt wissen bei Pattern/Matcher etc?

ah ok... oberflächliches wissen
Java:
public static void main(String[] args) throws Exception {
        String s = "5 NAD+MS+9900948990008::293";
        Pattern pattern = Pattern.compile("\\+(\\d+):");
        Matcher matcher = pattern.matcher(s);
        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

alles in allem aber ein äußerst bscheidendes Format der Textdatei um solche infos rauszuholen... wenn es dir möglich ist versuch das format zu ändern als noch an der Krankheit rumzudoktern
 
Zuletzt bearbeitet von einem Moderator:

MichaFL123

Mitglied
Danke für die schnelle Antwort - leider trifft deine Befürchtung zu - ich bin mit Pattern/Matcher noch nicht so vertraut - aber wenn das der Weg zum Ziel ist dann muss ich wohl ganz ganz viel :rtfm:.

Leider lässt sich am Format der Datei nicht ändern (fest vorgeschriebenes Format für Marktnachrichten).

Ich werde mich mal mit deinem Code-Beispiel auseinander setzen :) ich hoffe das klappt soweit.

Vielen Dank nochmal :toll:
 

MichaFL123

Mitglied
So ich habs jetzt soweit mal implementiert und dies soweit durchgetestet - an einer Stelle harkt es leider noch (großtenteils wohl meinen fehlenden RegEx-Wissen geschuldet).

Mein Code sieht so aus:
Java:
		    	 Pattern patternMnS = Pattern.compile("NAD+M*");
		    	 Matcher matcherMnS = patternMnS.matcher(result[x]);
		    	 if(matcherMnS.find()){
		    		 Pattern patternMn = Pattern.compile("\\+(\\d+):");
		    		 Matcher matcherMn = patternMn.matcher(result[x]);
		    		 if (matcherMn.find()) {
		    			 System.out.println(matcherMn.group(1));
		    		 }

Leider muss ich je nach Anfang des Strings:


- NAD+MS+9900948990008::293 -> Zuweisung String msg_sender (9900948990008)
- NAD+MR+9903104340002::293 -> Zuweisung String msg_empfänger (9903104340002)
- LOC+172+DE00094814770REL00050010400027755::89 -> Zuweisung String zähler (DE00094814770REL00050010400027755)
- DTM+9:20110101:102 -> Zuweisung String Datum (20110101)
- PIA+5+1-1?:1.8.0:SRW -> Zuweisung &Umwandlung String Gerät (1.80.0)
- QTY+87:32115 -> Zuweisung String GTQNr und Stand (87) & (32115)

Das heißt die Segmente werden durch ein Kennzeichen eingeleitet: NAD+MS+ oder LOC+172+


Im oben angegeben Code bekomme ich jedoch Sender & Empfäger ausgegeben. Ich müsste diese aber seperat erhalten um sie den jeweiligen Variablen zuzuweisen.

Noch ein Tip wie ich den Segement-Beginn auswerten kann?

Vielen Dank im Voraus :)
 
B

bygones

Gast
Java:
Pattern patternMnS = Pattern.compile("NAD+M*");
der regex macht auch keinen Sinn... [c]*[/c] ist ein sonderzeichen das sagt "0 oder mehrmals" und [c]+[/c] sagt "1 oder mehrmals"... wenn du wirklich + meinst, musst du es maskieren per \\ bzw wenn du sagen willst "irgendein zeichen beliebig oft", wäre es [c].*[/c]

egal... wenn es dir einfach um den anfang geht kannst du auch einfach
Java:
if (result[x].startsWith("NAD")) {
  // ist was mit NAD
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Strings im Array nach Namen sortieren Java Basics - Anfänger-Themen 11
J Strings nach Teile sortieren Java Basics - Anfänger-Themen 4
0 Strings nach TABULATOR splitten Java Basics - Anfänger-Themen 10
Bastie Strings nach häufigkeit sortieren -aber wie? Java Basics - Anfänger-Themen 10
R ArrayList nach Strings sortieren Java Basics - Anfänger-Themen 6
W Suche nach strings zwischen eckigen Klammern mittels regulärer Ausdrücke Java Basics - Anfänger-Themen 3
K Strings der Größe nach ordnen Java Basics - Anfänger-Themen 5
M Kann man im Filter nach mehreren Strings filtern lassen Java Basics - Anfänger-Themen 11
M Strings nach ASCII Zeichen trennen. Java Basics - Anfänger-Themen 7
M Konvertierung v. Strings (evtl. mit Sonderzeichen) nach HTML Java Basics - Anfänger-Themen 8
L Innerhalb eines Strings nach einem Teilstring suchen Java Basics - Anfänger-Themen 2
M Sortieren eines Strings nach Alphabet Java Basics - Anfänger-Themen 4
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Nachkommastellen von Strings Java Basics - Anfänger-Themen 3
T Strings unveränderlich???? Java Basics - Anfänger-Themen 22
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
W Strings und das parsen Java Basics - Anfänger-Themen 8
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Konkatenation von zwei Strings Java Basics - Anfänger-Themen 6
J Abbruchbedingung in Schleife/ Untersuchung von Strings Java Basics - Anfänger-Themen 2
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
X Anagramm mit Strings und Methode Java Basics - Anfänger-Themen 53
P geschachtelte Schleife mit Strings Java Basics - Anfänger-Themen 2
P Strings mit der Axt zerteilen Java Basics - Anfänger-Themen 7
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
K Strings hochzählen Java Basics - Anfänger-Themen 20
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
J Unveränderbarkeit von Strings Java Basics - Anfänger-Themen 3
O Klammerung bei Strings Java Basics - Anfänger-Themen 10
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
B mir nur die Gesamtzahl von einzigartigen Strings aus Array ausgeben lassen Java Basics - Anfänger-Themen 5
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
C 2 Strings Java Basics - Anfänger-Themen 15
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
javaerd Wie kann ich Brute Force Methode mit Strings erweitern Java Basics - Anfänger-Themen 1
R Erste Schritte Strings "einrücken" Java Basics - Anfänger-Themen 3
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
B gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben Java Basics - Anfänger-Themen 5
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
L Werte von Strings ? Java Basics - Anfänger-Themen 1
L Strings und Arrays - Expand Java Basics - Anfänger-Themen 12
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
Syncopated Pandemonium Verketten von Strings funktioniert nicht Java Basics - Anfänger-Themen 4
F Wahrscheinlichkeit von Strings Java Basics - Anfänger-Themen 3
MiMa Splitten eines Strings Java Basics - Anfänger-Themen 5
T Hashfunktion für Strings Java Basics - Anfänger-Themen 3
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben