ReguläreAusdrückeSplit/Scanner

Manda

Erfahrenes Mitglied
Hallo Leute,

habe folgendes Problem mit dem ich nich weiter komme.
Aufgabe: (im plus rahmen)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Textanalyse:
\H: header \K: aKey \N: 123 \P: \N: xyz \H: %%"
\H: header2 \N: 456 \K: aKey2
Der Text enthält Zeilen strukturierter Datenelemente.
Jedes Datenelement besteht aus einem Delimiter-String: {\H \K \N}, gefolgt von den eigentlichen
Daten. Die Semantik der Delimiterstrings könnte sein:
H -> Header als Text, K -> Key als Text, N -> Number
Die Folge von: „\P: \N: xyz“ in der ersten Zeile ist illegal. Ein Ergebnis der Textanalyse könnte so
aussehen:
Key: H: Txt: header
Key: K: Txt: aKey
Key: N: Int: 123
nothing to scan: P:
Key: N: illegal Format: int expected- xyz
Key: H: Txt: %%
----
Key: H: Txt: header2
Key: N: Int: 456
Key: K: Txt: aKey2
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Was ich versuche ist, die Textanalyse als String einzulesen und dann mit den .split/.scanner halt so wie gewünscht auszugeben. Leider funkt das überhaupt nicht :confused:
Könnt ihr mir helfen!! Irgendwelche ideen Lösen soll ich es aber mit RegulärenAusdrücken. Danke schon mal im Vorraus.

MfG
Manda
 
Hi Leute,

hab mal bisschen rum probiert, bin jetzt mit dem code soweit:
++++++++++++++++++++++++++++++++++++++++++++
Scanner scanner = new Scanner(s);
scanner.useDelimiter("\\\\");

while(scanner.hasNext())
{
Scanner scanner2 = new Scanner(scanner.next());
scanner2.useDelimiter(":");

String key=scanner2.next();
System.out.println("Key: " + key + ":" + " Txt:" + scanner2.next());
}
+++++++++++++++++++++++++++++++++++++++++++
Ausgabe ist folgende:
Key: H: Txt: header
Key: K: Txt: aKey
Key: N: Txt: 123
Key: P: Txt:
Key: N: Txt: xyz
Key: H: Txt: %%
Key: H: Txt: header2
Key: N: Txt: 456
Key: K: Txt: aKey2

Jetzt versuche ich es mit "if-else" irgendwie hinzukriegen, dass er, überall wo ein 'H, K' vorkommt, 'Txt' schreibt und bei 'N' soll er 'Int' schreiben. Bei 'P' einfach nur die Fehlermeldung per system.out.print(); ausgeben.

Aber sobald ich ein if-else benutze, also ich vergleiche den scanner mit den Buchstaben, dann soll er das ausgeben was nach der IF anweisung folgt.
Bsp.: if(key == "H") System.out.println("Key: " + key + ":" + " Txt:" + scanner2.next());
Aber er gibt garnichts aus lol bin schon am verzweifeln, irgendwelche ideen!!

Danke schonmal
 
Falls es jemanden interessiert, Aufgabe ist gelöst:
in main() steht dies:
textanalyse("\\H: header \\K: aKey \\N: 123 \\P: \\N: xyz \\H: %%\\H: header2 \\N: 456 \\K: aKey2");

public static void textanalyse(String s)
{
Scanner scanner = new Scanner(s);
scanner.useDelimiter("\\\\");

while(scanner.hasNext())
{
Scanner scanner2 = new Scanner(scanner.next());
scanner2.useDelimiter(":");

String key=scanner2.next();
if(key.equals("H") || key.equals("K"))
System.out.println("Key: " + key + ":" + " Txt:" + scanner2.next());
if(key.equals("N"))
System.out.println("Key: " + key + ":" + " Int:" + scanner2.next());
if(key.equals("P"))
System.out.println("nothing to scann: " + key);
}

}

Danke trotzdem
 
Zurück