Strings bearbeiten

kirshara

Mitglied
Hallo Leute,

ich suche nach einem Codeschnipsel der eine folgende Eingabe verarbeiten kann.

Wort1 Wort2 () Wort3 ()

In den Klammern können beliebige Zeichen stehen auch Leerzeichen.

Nun soll alles getrennt in einem Stringarray stehen.
Also
str.arrray[0] = Wort1
str.arrray[1] = Wort2
str.arrray[2] = ()
str.arrray[3] = Wort3
str.arrray[4] = ()

Es ist allerdings auch nicht definiert an welcher Stelle die Klammerausdrücke auftauchen. Es kann auch so aussehen Wort1() Wort2 Wort3 () Wort4

Eine Teilung an den Klammern bekomme ich theoretisch hin str.split("\\(|\\)") aber dann den Rest noch zu teilen ist irgendwie blöd. Kann man nicht alles in einem Abwasch machen?
Quasi an Leerzeichen und Klammern teilen ohne in den Klammern zu teilen bei einem Leerzeichen.

Viele Grüße
 

Chisao

Mitglied
Ok habe das alles jetzt bestimmt 5 mal gelesen...ich hoffe ich hab dein Problem verstanden^^
Der User kann mehrere Wörter eingeben. Diese Wörter oder Zeichen sollen anschließend getrennt in einem Array gespeichert werden. Wenn ich das Richtig verstanden habe wäre das hier schon eine schnelle selbstgebastelte Lösung:
Java:
public static String[] split(String s) {
		// Leerzeichen werden gesucht. Die Anzahl der Wörter beträgt die Anzahl
		// der Leerzeichen+1
		int length = 1;
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) == ' ')
				// Wurde ein Leerzeichen gefunden, wird die Länge um 1 erhöht.
				length++;
		}
		// Ein String für das aktuelle Wort und ein Array aller Wörter wird
		// erstellt.
		String actualWord = "";
		String[] str = new String[length];
		// Die Länge die nun nicht mehr gebraucht wird missbrauche ich jetzt als
		// Index für das String Array
		length = 0;
		// String wird wieder nach Leerzeichen durchsucht.
		for (int i = 0; i < s.length(); i++) {
			// Wird ein Leerzeichen gefunden, wird dort das aktuelle Wort
			// abgelegt, das Wort wieder auf "0" resettet und der Index um 1
			// erhöht.

			if (s.charAt(i) == ' ') {
				str[length] = actualWord;
				length++;
				actualWord = "";
			} else {
				// Wird kein Leerzeichen gefunden, wird das aktuelle Zeichen zur
				// Zeichenkette "actualWord" hinzugefügt.
				actualWord += s.charAt(i);
			}
		}
		// Zuletzt wird das letzte Wort in das Array abgelegt(Da kein
		// Leerzeichen am Ende ist, muss dies hier noch einmal manuell
		// geschehen).
		str[length] = actualWord;
		return str;
	}

Hab ich dein Problem richtig erkannt?^^
 

franky27

Bekanntes Mitglied
Java:
Hab ich dein Problem richtig erkannt?
Falls nein, poste mal ein paar Beispiele, ich finds nämlich auch schwer zu durchblicken.
 

kirshara

Mitglied
Hey Leute,

hehe okay ich dachte mir, dass ich es kompliziert geschrieben habe.

Also Chisao leider verstehe ich noch nicht ganz was genau du machst :) eventuell morgen wenn ich nicht so müde bin. Aber wenn ich meinen String durch deine Methode haue kommt das hier raus ([Ljava.lang.String;@7852e922).

Ich versuche es nochmal zu erklären:

Gegeben ist folgende Liste:
Wort1 ( dfs f f ) Wort2 Wort3(38 3ubfjn )
Wort1( dsaf dd) Wort2 Wort3

Ich habe jede Zeile als einzelnen String.

Rauskommen soll
str.arrray[0] = Wort1
str.arrray[1] = dfsff
str.arrray[2] = Wort2
str.arrray[3] = Wort3
str.arrray[4] = 383ubfjn

str1.arrray[0] = Wort1
str1.arrray[1] = dsafdd
str1.arrray[2] = Wort2
str1.arrray[3] = Wort3


Natürlich verarbeite ich jede Zeile einzeln und dafür suche ich einen einfachen Code.


Ich habe derweil eine Lösung gefunden die aber sehr unschön ist.

Zuerst habe ich den String an den () aufgeteilt, dann alle Leerzeichen in den Teilen gelöscht wo sich Klammern befinden. Danach habe ich den String wieder zusammengesetzt und an den Leerzeichen getrennt -.-
 

kirshara

Mitglied
Das habe ich getan aber wenn ich von Anfang an bei Leerzeichen trenne dann teile ich ja den Klammerausdruck der zusammen bleiben soll auch auf.
 

kirshara

Mitglied
Ja sorry im ersten Beispiel habe ich nur dazugeschrieben, dass in den Klammern auch Leerzeichen stehen können. Im zweiten Beispiel habe ich extra welche eingefügt :)
 

Gucky

Top Contributor
Das heißt Wörter können entweder durch umgebende Klammern oder durch Leerzeichen begrenzt sein?
Dann guck dir mal RegExes an. Damit müsste es vielleicht gehen.
 

Tarrew

Top Contributor
Gucky hatte ja schon RegEx angesprochen.

Hier wäre ein Vorschlag von mir ;)

Java:
	public static void main(String[] args) {
		String s = "Wort1 ( dfs f f ) Wort2 Wort3(38 3ubfjn )";
		s = s.replaceAll("\\s+(?=[^()]*\\))", "");

		Pattern pattern = Pattern.compile("(\\s*\\()|(\\)\\s*)|\\s+");
		String[] sArray = pattern.split(s);
		System.out.println(Arrays.toString(sArray));
	}

Zuerst lösche ich die Leerzeichen innerhalb der Klammern, danach wird der String gesplittet, entweder an den Klammern oder an Whitespaces.
Habs nur kurz getestet, aber scheint für deine Strings zu passen.

Grüße
 

Tarrew

Top Contributor
Im Prinzip ist es ganz einfach.
Ich würd mir mal diese Seite durchlesen:
Java - Regular Expressions

Hier hättest du nochmal eine Übersicht:
http://www.cheat-sheets.org/saved-copy/regular_expressions_cheat_sheet.png
Ansonsten einfach mal nach "regulären Ausdrücken" googeln.

In meinem Beispiel:
Java:
s = s.replaceAll("\\s+(?=[^()]*\\))", "");

Wäre der eigentliche reguläre Ausdruck ja nur:
Java:
\\s+(?=[^()]*\\))

\\s steht für ein Whitespace.
+ heißt, dass beliebig viele (aber mindestens 1) Whitespace vorkommen müssen.
?= ist eine Lookahead-Assertion.
[^()] heißt, dass ein beliebiges Zeichen kommen kann, außer ( oder )
* bedeutet, dass der Block 0 Mal oder beliebig oft kommen kann.
\\) heißt, dass danach eine schließende Klammer kommt
und die letzte ) beendet die Lookahead-Assertion.

Es wird also praktisch nach einem String gesucht, der aus beliebig vielen Whitespaces besteht. Diese Whitespaces werden aber nur durch "" ersetzt, wenn die Lookahead-Assertion erfüllt ist, also wenn danach beliebig viele Zeichen außer den Klammern kommen und danach eine schließende Klammer (was ja bedeutet, dass die Whitespaces innerhalb einer Klammer sind).

Am Anfang ist das vllt etwas verwirrend, aber man kommt schnell rein und es kann sehr nützlich sein :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
L Strings in einem JOptionPane farbig Java Basics - Anfänger-Themen 2
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
C Chars eines Strings mit for schleife rückwärts auslesen Java Basics - Anfänger-Themen 8
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1
hello_autumn Strings ersetzen... Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben