Problem beim Splitten eines Strings

Status
Nicht offen für weitere Antworten.

Hunin

Mitglied
Hallo zusammen,

ich habe folgendes Problem:
Ich möchte einen Eingabestring in ein bestimmtes Muster splitten.


Der Eingabestring ist wie folgt aufgebaut:

09/20/2006 10:05:59:ModulnameBspIF-K2W2:INFO01:MeldungDieBeliebigLangIst

Das Trennzeichen ist hier der Doppelpunkt und genau das ist mein Problem:

Das erste Feld, also der Timestamp hat 2 Doppelpunkte in der Uhrzeit. Diese sollen natürlich nicht getrennt werden.
Da hänge ich momentan auf dem Schlauch.

Gesplittet soll in folgende Felder:

Datum: 09/20/2006
Uhrzeit: 10:05:59
Threatname: ModulnameBspIF-K2W2
LogLevel: INFO01
MessagesData: MeldungDieBeliebigLansIst


Mit der Funktion:

Code:
StreamTokenizer(String str, String trennzeichen)

teilt er mir auch die Uhrzeit auf. Was ich ja nicht möchte.


Kann mir da einer weiterhelfen? Mir brummt schon der Kopf von der ganzen Sache ;-)

Gruß Hunin
 

NTB

Bekanntes Mitglied
Du könntest quick&dirty die gesplittete Uhrzeit einfach wieder zusammensetzen.
Ansonsten reguläre Ausdrücke. Wenn das immer exakt dieser Aufbau ist, ist das ja nicht so komplex.

Code:
1x alle zeichen bis leerzeichen
1x 2zahlen:2zahlen:2zahlen bis doppelpunkt
3x alle zeichen bis doppelpunkt

....und das jetzt nur noch regulär ausdrücken und fertig
 

Hunin

Mitglied
So in der Art hatte ich das schon gedacht.

Aber wie zähle ich bis zu dem Leerzeichen zum Beispiel?
Bzw. wie sag ich dem Programm:

Hey, nimm den ersten Teil bis zum Leerzeichen und stecke ihn in die Variable XY.


Sry, wenn die Frage etwas dumm erscheint. Bin noch ein Frischling auf dem Gebiet und soll halt ein Programm schreiben welches den oben genannten String in die einzelnen Felder parsed.

Da ich mich noch nicht viel mit Javaliteratur auseinander gesetzt hab, fällt es mir etwas schwer das Problem richtig anzupacken.
Ich bin ja froh das es mit dem Einlesen fuktioniert. ;-)

Danke für die Hilfe.

Gruß Hunin
 

mikachu

Top Contributor
09/20/2006 10:05:59:ModulnameBspIF-K2W2:INFO01:MeldungDieBeliebigLangIst -> line
Code:
String[] splitted = line.split( ":" ); // größe von 6

Datum: 09/20/2006
Code:
String datum = splitted[0].split( " " )[0];
Uhrzeit: 10:05:59
Code:
String zeit = splitted[0].split( " " )[1];
zeit += ":" + splitted[1] + ":" + splitted[2];
Threatname: ModulnameBspIF-K2W2
Code:
String threadname = splitted[3];
LogLevel: INFO01
Code:
String logLevel = splitted[4];
MessagesData: MeldungDieBeliebigLansIst
Code:
String messagesData = splitted[5];

#edit 1:
wie das mit dem StringTokenizer geht, ist mir unklar, hab ich noch nie benutzt... wenn ich sowas machen muss, nutz ich immer String#split( delimiter )

#edit 2:
hab das mal korrigiert
 

Hunin

Mitglied
Hey cool,

das kannte ich jetzt noch nicht.

Aber splittet er bei diesem Weg nicht die Uhrzeit in 3 Teile?


Uhrzeit: 10:05:59

Code:
String zeit = splitted[0].split( " " )[1];


Da ja oben gesagt wurde:

Code:
String[] splitted = line.split( ":" ); // größe von 4

Also Delimiter :.


Das Problem liegt ja da, dass ich die Uhrzeit in einem Stück brauch und in eine Variable abspeichern möchte.
Wenn ich das richtig verstehe, splittet er hier die Uhrzeit in 3 Teile auf?

Kann natürlich sein, dass ich das missverstehe.
 
M

Michael...

Gast
Da die Zeichenanzahl für Datum und Uhrzeit fix sind, könnte man zunächst den String mittels substring() in Datum, Uhrzeit und Rest zerlegen und dann den Rest nochmals mit split(":") auftrennen
 

Hunin

Mitglied
Wie kann ich beim substring das ende des strings angeben?

Da mein Eingabe String beliebig lang sein kann.
 

Hunin

Mitglied
Ich habs jetzt so gemacht:


Code:
String date = str.substring(int start = 1, int end = 10);
String time = str.substring(int start = 12, int end = 19);
String message = str.substring(int start = 21);


Aber ich bekomm immer noch 2 Fehler.

Zum einen: .class expected
und zum anderen: ")" expected


Hab ich vergessen nen Package zu importieren?

Gruß
 

mikachu

Top Contributor
:oops: das mit der uhrzeit stimmt... hab ich gar nicht gesehen

#edit 1:
hab meinen obigen post mal korrigiert :cool:
 

jperl

Mitglied
Hunin hat gesagt.:
Ich habs jetzt so gemacht:


Code:
String date = str.substring(int start = 1, int end = 10);
String time = str.substring(int start = 12, int end = 19);
String message = str.substring(int start = 21);


Aber ich bekomm immer noch 2 Fehler.

Zum einen: .class expected
und zum anderen: ")" expected


Hab ich vergessen nen Package zu importieren?

Gruß

Code:
String date = str.substring(1, 10);
String time = str.substring(12, 19);
String message = str.substring(21);

jperl

#edit
zur info
ein string tokenizer macht im grunde auch nix anderes als split. nur dass die daten halt nicht in einem array zurückgegeben werden, sondern einzeln abgefragt werden können.

Code:
StringTokenizer stringTokenizer = new StringTokenizer("Dies ist ein Satz.");
while (stringTokenizer.hasMoreTokens())
{
         System.out.println(stringTokenizer .nextToken());
}

#edit2
war zu blind zu sehen, dass die syntax falsch war und ein cast verwendet hätte werden müssen.
 
B

bygones

Gast
Hunin hat gesagt.:
Code:
String date = str.substring(int start = 1, int end = 10);
String time = str.substring(int start = 12, int end = 19);
String message = str.substring(int start = 21);
das ist so dein code ?

dann schnell nochmal ein buch in die hand und lesen... das ist keine gueltige syntax !

Code:
String date = str.substring(1, 10);
String time = str.substring(12, 19);
String message = str.substring(21);
 

Hunin

Mitglied
Fehler erkannt. Fehler gebannt.

Hatte in einem Beispiel gesehen das dort immer Variable deklariert wurden. Aber geht ja auch ohne.

Danke nochmal.
 

NTB

Bekanntes Mitglied
Hunin hat gesagt.:
Aber wie zähle ich bis zu dem Leerzeichen zum Beispiel?
Bzw. wie sag ich dem Programm:

Hey, nimm den ersten Teil bis zum Leerzeichen und stecke ihn in die Variable XY.

Wie geschrieben: Mit regulären Ausdrücken.
Ich hatte ja oben schon geschrieben, dass man für den ersten Teil alle Zeichen bis zum Leerzeichen braucht.
In der API findest Du bei Pattern dazu die Lösung:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

"." steht für ein beliebiges Zeichen.
"*" steht für ein- oder mehrfach.
".*" steht also für ein beliebiges Zeichen, das ein- odere mehrfach auftritt.
" " steht für ein Leerzeichen (da ist ein Leerzeichen *g*).
".* " steht also für alles bis zum Leerzeichen.
"(.*) " stellt aus dem ersten Teil ohne das Leerzeichen eine Gruppe her, die man später referenzieren kann.
Und so geht man das alles durch und hinten kommt das raus:


Code:
		String src = "09/20/2006 10:05:59:ModulnameBspIF-K2W2:INFO01:MeldungDieBeliebigLangIst";
		String regex = "(.+) (\\d\\d:\\d\\d:\\d\\d):(.*):(.*):(.*)";
		
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(src);

		if (m.matches()) {
			for (int cnt=1; cnt <= m.groupCount(); cnt++) {
				System.out.println(m.group(cnt));
			}
		}

Die anderen Lösungen, die hier gepostet sind, sie wie ich schon oben schrieben ziemlich quick&dirty, finde ich zumindest.

P.S.: Für die Erbsenzähler: Mir ist klar, dass man den regulären Ausdruck noch optimieren kann. Aber so bleibt er wenigstens etwas verständlich.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
A Problem beim Splitten eines Strings Java Basics - Anfänger-Themen 10
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
B Gleicher Prozess starten und stoppen (Problem beim Stoppen) Java Basics - Anfänger-Themen 5
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
C Problem beim laden eines BufferedImage Java Basics - Anfänger-Themen 2
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
R Problem beim erstellen eines neuen Klassenobjekts Java Basics - Anfänger-Themen 2
F Input/Output Problem beim einlesen eines Strings Java Basics - Anfänger-Themen 3
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
P Problem beim Abschluss im Kompositum Java Basics - Anfänger-Themen 3
M Problem mit null pinterexception beim laden von Bildern Java Basics - Anfänger-Themen 20
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
J Problem beim ausführen in cmd.exe Java Basics - Anfänger-Themen 4
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
A Problem beim Compilieren Java Basics - Anfänger-Themen 11
J Problem beim Fenster Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
M Problem beim Compilieren Java Basics - Anfänger-Themen 14
Maxim6394 Problem beim Abspielen von Sounds Java Basics - Anfänger-Themen 8
S Problem beim ersten compilieren überhaubt Java Basics - Anfänger-Themen 43
H Problem beim lesen des InputStreams von einem Subprozess Java Basics - Anfänger-Themen 4
Luk10 Problem beim .jar Datei erstellen Java Basics - Anfänger-Themen 19
L Problem beim Ausführen Java Basics - Anfänger-Themen 40
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
E Problem beim Programmieren eines Kartenspiels Java Basics - Anfänger-Themen 3
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
M Problem beim compilieren Java Basics - Anfänger-Themen 6
JAVAnnik problem beim lvl laden Java Basics - Anfänger-Themen 15
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
W Problem beim erstellen eines Tests Java Basics - Anfänger-Themen 16
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
S Problem beim Speichern und Laden von Daten Java Basics - Anfänger-Themen 13
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
W Problem beim CSV-Import Java Basics - Anfänger-Themen 5
M Datentypen Problem beim zusammenstellen eines Abfrage-Strings Java Basics - Anfänger-Themen 3
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
B Problem beim Email versenden mit Javamail Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
I Problem beim Schreiben eines ersten Programms Java Basics - Anfänger-Themen 3
D Problem beim Zeichnen von "Das Haus vom Nikolaus" Java Basics - Anfänger-Themen 10
D Problem beim Auslesen aus File Java Basics - Anfänger-Themen 3
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
J Problem beim Löschen von elementen aus einer ArrayList Java Basics - Anfänger-Themen 5
V Problem beim Programm laden Java Basics - Anfänger-Themen 5
H Problem beim kompilieren Java Basics - Anfänger-Themen 3
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Problem beim Returnwert einer Methode Java Basics - Anfänger-Themen 12
M line.separator: Problem beim Lesen einer Datei Java Basics - Anfänger-Themen 11
Miladriel Problem beim Neuzeichnen nach deiconify Java Basics - Anfänger-Themen 9
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
H problem beim zeichen im JFrame Java Basics - Anfänger-Themen 6
F Problem beim Objekteaufruf... Java Basics - Anfänger-Themen 4
E BlockChallenge: Problem beim löschen der Blöcke Java Basics - Anfänger-Themen 3
H Problem beim Verkürzen von Programm Java Basics - Anfänger-Themen 3
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
M Problem beim Zugriff auf Daten GUI + Startklasse Java Basics - Anfänger-Themen 4
P Problem beim Thread Java Basics - Anfänger-Themen 20
0 problem beim Polygon zeichnen Java Basics - Anfänger-Themen 3
V Problem beim erstellen eines ausführbaren Programs Java Basics - Anfänger-Themen 5
0 Problem beim Starten des Applets Java Basics - Anfänger-Themen 2
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
G Problem beim Programmieren von Blackjack Java Basics - Anfänger-Themen 15
R Problem beim Laden eines Images Java Basics - Anfänger-Themen 7
K Problem beim installieren des JDK 1.6+ version Java Basics - Anfänger-Themen 3
T Problem beim Konsolenstart Java Basics - Anfänger-Themen 5
C Problem beim Berechnen der Quadratwurzel Java Basics - Anfänger-Themen 3
C Problem beim nutzen von Teilprogrammen in main Java Basics - Anfänger-Themen 2
M Problem beim Zeichnen Java Basics - Anfänger-Themen 5
D Problem beim Kompilieren Java Basics - Anfänger-Themen 4
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
G Problem beim Schreiben in Textdatei Java Basics - Anfänger-Themen 9
F ggT finden - problem beim qc Java Basics - Anfänger-Themen 4
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Habe ein Problem mit syn-Editor ( beim compilieren) Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben