Aus einem String blanks entfernen oder hinzufügen.

Status
Nicht offen für weitere Antworten.

JT. Montana

Mitglied
Hallo,
ich möchte einFunktionen schreiben die mir aus einem String alle Blanks (Leerzeichen) entfernt und eine Funktion die mir in einem vorhanden String nach jedem zweiten Zeichen, ein Blank hinzufügt.

Ich Funktion geschrieben, die eigentlich das erfüllt, aber sie ist ineffizient... sehr langsam...
Es ist eine Aufgabe für ein Studienfach in der wir lernen sollen mit StringBuilder Objekten umzugehen...
String.replace oder replaceAll sollen wir nicht benutzen.
Hier mein Code:
Code:
   static public String blanksRaus(String s){
	   StringBuilder mitBlanks = new StringBuilder(s);
	   for(int e=0; e<5; e++){ //bis zu fuenf blanks hintereinander
			for(int i=0; i<mitBlanks.length(); i++){
				if(mitBlanks.charAt(i)==' '){
					mitBlanks.deleteCharAt(i);
				}
			}
		}
	   return mitBlanks.toString();
   }
   static public String blanksRein(String s){
		StringBuilder ohneBlanks = new StringBuilder(s);
		StringBuilder mitBlanks = new StringBuilder("");
		for(int i=0; i<ohneBlanks.length(); i+=2){
			mitBlanks.append(ohneBlanks.charAt(i));
			mitBlanks.append(ohneBlanks.charAt(i+1));
			mitBlanks.append(" ");
		}
	   return mitBlanks.toString();
   }
Wie ihr seht prüfe ich in blanksRaus ob in einem String max. 5 Blanks hintereinander stehen.... wie kann ich das automatisieren.. also mit einer while schleife prüfen, wieviele Blanks maximal hintereinander sind in einem String.
Ich hoffe jemand kann mir einen Tipp geben wie ich die Funktion besser programmiere.
Gruß
Jan
 
G

Gelöschtes Mitglied 5909

Gast
mit regex... String noBlacks = string.replaceAll(" ", "");
die blanks rein zu machen geht mit regex wohl auch besser, is aber etwas komplizierter, kannst sie zum beispiel zählen und dann ein replace machen
 
S

SlaterB

Gast
> wie kann ich das automatisieren

verwende eine while()-Schleife und erhöhe den Index separat ein einer int-Variable

in der Schleife:
wenn aktuelles Zeichen ok, dann index erhöhen,
ansonsten aktuelle Zeichen entfernen und index NICHT erhöhen (in nächster Runde wieder gleichen index prüfen)

als Schleifenbedingung index mit String-Länge vergleichen

--------

das Löschen ist aber bei großen String womöglich durchaus inperformant,
da alle Zeichen hinter dem gelöschten Char verschoben werden müssen,
also besser wie bei blanksRein mit zwei StringBuildern arbeiten:
nur die nicht-Leerzeichen kopieren, dann brauchst du auch keine komplizierte while-Scheile

----

allerdings bäuchtest du bei beiden eigentlich nur einen StringBuilder

StringBuilder ohneBlanks = new StringBuilder(s);
ist ohne Funktion,
length() und charAt() kannst du auch direkt auf den String aufrufen
----------

ansonsten halte ich das für ein recht effizientes Vorgehen,
was läßt dich vermuten, dass das langsam ist?

------

> mitBlanks.append(ohneBlanks.charAt(i));
> mitBlanks.append(ohneBlanks.charAt(i+1));

bei einem String ungerade Länge wirst du hier eine Exception bekommen,
verwende lieber eine normale i-Schleife mit ++ statt +=2

und nur bei ungeraden i (i % 2 == 1) fügst du ein Leerzeichen an
 

JT. Montana

Mitglied
Hi,
also ich habs jetzt hinbekommen...
es sollte allerdings zwischen zwei Zeichen ein Blank eingefügt werden... also nach jedem Zeichen.
Am ende sollte keins eingefügt werden.
Code:
   static public String blanksRaus(String s){
	   StringBuilder ohneBlanks = new StringBuilder("");
	   for(int i=0; i<s.length(); i++){
			if(s.charAt(i)!=' '){
				ohneBlanks.append(s.charAt(i));
			}
		}
	   return ohneBlanks.toString();
   }
   static public String blanksRein(String s){
		StringBuilder mitBlanks = new StringBuilder("");
		if(s.length()>1){
			for(int i=0; i<s.length(); i++){
				mitBlanks.append(s.charAt(i));
				mitBlanks.append(" ");
			}
			mitBlanks.deleteCharAt(mitBlanks.length()-1);
		}else{
			for(int i=0; i<s.length(); i++){
				mitBlanks.append(s.charAt(i));
			}
		}
	   return mitBlanks.toString();
   }
Würde mich über kritik freuen.
Gruß
Jan
 
S

SlaterB

Gast
for(int i=0; i<s.length(); i++){
mitBlanks.append(s.charAt(i));
if (i % 2 == 1) {
mitBlanks.append(" ");
}
}

---------

die Unterscheidung
if(s.length()>1){
muss nicht sein, lass doch ein Leerzeichen einfügen und am Ende wieder löschen,
wenn nun aber nur nach jedem zweiten Zeichen dann musst du bei String-Länge 1 besonders aufpassen

am besten am Ende vor dem Löschen prüfen, ob das zu löschende letzte Zeichen ein ' ' ist,
dabei könnte allerdings auch ein normales ' ' entfernt werden..

dann lieber beim Einfügen prüfen:

for(int i=0; i<s.length(); i++){
mitBlanks.append(s.charAt(i));
if (i % 2 == 1 und nicht letzte Position) {
mitBlanks.append(" ");
}
}
 

Grasstampfer

Gesperrter Benutzer
oder einfach so
Code:
static public String blanksRein(String s){
        StringBuilder mitBlanks = new StringBuilder(s);
        for ( int i = 1; i < mitBlanks.length(); i+=2 ) {
            mitBlanks.insert( i, " " );
        }
        return mitBlanks.toString();
     }
 
S

SlaterB

Gast
eine Liste (hier im entfernten Sinne) zu durchlaufen und sie gleichzeitig zu verändern ohne Iterator
ist eines der bösen Dinge in Java/ Programmiersprachen, die man einzeln benennen kann,
davon rate ich dringend ab

durch das Verschieben der Buchstaben hätte man evtl. wieder die Inperformanz, die anfangs gemeint war,
ist aber vielleicht auch überhaupt nicht relevant/ vorhanden
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
U Char zu einem String machen Java Basics - Anfänger-Themen 1
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
B String zu einem bestehenden String hinzufügen Java Basics - Anfänger-Themen 9
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
O String von vorne nach hinten an einem Zeichen Java Basics - Anfänger-Themen 10
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
Dimax Leerzeilen aus einem String entfernen Java Basics - Anfänger-Themen 61
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
D Input/Output Array in einem String mit einem Trennzeichen verbinden Java Basics - Anfänger-Themen 17
N Variablen int Wert einem String abgeben Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
F String zu einem Server senden Java Basics - Anfänger-Themen 4
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A werte in einem String berechnen Java Basics - Anfänger-Themen 3
F Größtes Produkt in einem String Java Basics - Anfänger-Themen 4
P Char aus einem String auswählen Java Basics - Anfänger-Themen 4
M Benutzerdefinierte Suche in einem String - outofbounds Java Basics - Anfänger-Themen 7
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
C Anzahl bestimmter Zeichen in einem String ausgeben Java Basics - Anfänger-Themen 7
C Position eines Zeichens in einem String ausgeben Java Basics - Anfänger-Themen 1
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
M (Leerzeichen) zu einem gesuchten String Java Basics - Anfänger-Themen 4
K String mit Leerstellen und einem X Java Basics - Anfänger-Themen 2
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
D Zahl in einem String finden Java Basics - Anfänger-Themen 4
I Entitäten speichern in einem String? Java Basics - Anfänger-Themen 1
W Schlüsselworte Methode, die die grösste Zahl aus einem String ermittelt und zurückgibt Java Basics - Anfänger-Themen 8
G String einem String Array übergeben Java Basics - Anfänger-Themen 3
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
N Maximale Zahl in einem String Java Basics - Anfänger-Themen 8
B Unbekannte Zahl aus einem String umwandeln Java Basics - Anfänger-Themen 15
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
I Aus einem String Vorname & Nachname bekommen Java Basics - Anfänger-Themen 2
J Ascii Zeichen von einem String umwandeln und ausgeben Java Basics - Anfänger-Themen 11
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
J gesamte Hashmap mit Zeilenumbrüchen in einem String Java Basics - Anfänger-Themen 8
J Aus einem String unbekannte zeichen filtern Java Basics - Anfänger-Themen 11
A mehrere replace in einem string Java Basics - Anfänger-Themen 3
D String einem String[] hinzfügen Java Basics - Anfänger-Themen 13
C String ab einem bestimmten Char abschneiden??? Java Basics - Anfänger-Themen 7
O Zahlenformatierung in einem String Java Basics - Anfänger-Themen 4
J Von einem String einzelne Wörter speichern Java Basics - Anfänger-Themen 6
D Das 1. Wort aus einem String herauslesen Java Basics - Anfänger-Themen 6
Beckenbauer OOP Durch Komma getrennte Einträge in einem String in ein Array oder eine Tabelle schreiben Java Basics - Anfänger-Themen 4
D Zählen von Umlauten in einem String Java Basics - Anfänger-Themen 4
S Zeichen in einem String hochstellen? Java Basics - Anfänger-Themen 9
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
C Problem mit der Extraktion von Zahlen aus einem String Java Basics - Anfänger-Themen 8
J Anzahl der Buchstaben in einem String Java Basics - Anfänger-Themen 12
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
Z Sonderzeichen in einem String gezeichnen/bearbeiten Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
eXistenZ wert von einem String auf einen Integer ändern =( Java Basics - Anfänger-Themen 6
J Wörter in einem string zählen und die anzahl zurückgeben Java Basics - Anfänger-Themen 4
D Einzelne Ziffern aus einem String Java Basics - Anfänger-Themen 10
M Datentypen Mehrere Integer aus einem String auslesen Java Basics - Anfänger-Themen 4
N an einem String ein zahl anhengen Java Basics - Anfänger-Themen 6
V Anzahl eines Buchstaben in einem String zählen Java Basics - Anfänger-Themen 7
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
Developer_X jede Zeile einer Datei mit einem String verketten Java Basics - Anfänger-Themen 16
B String einem Chararray zuweisen Java Basics - Anfänger-Themen 2
I Aufkommen eines be*timmten Zeichens in einem String zählen Java Basics - Anfänger-Themen 13
S Anzahl von Zeichen in einem String suchen und zählen Java Basics - Anfänger-Themen 1
T Anzahl eines Strings in einem String-Array Java Basics - Anfänger-Themen 5
B Mehrere Methoden an einem String Java Basics - Anfänger-Themen 6
G Zeilenumbruch in einem String Java Basics - Anfänger-Themen 21
N Bytes in einem String Java Basics - Anfänger-Themen 3
M in einem String vergleichen Java Basics - Anfänger-Themen 9
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
C bestimmte Buchstaben in einem String ändern Java Basics - Anfänger-Themen 5
H Mehrmaliges vorkommen eines Zeichens in einem String Java Basics - Anfänger-Themen 14
M Input/Output Stream aus einem String Java Basics - Anfänger-Themen 2
N Zahl aus einem String finden und als Integer speichern Java Basics - Anfänger-Themen 3
M Aus einem String bestimmte zeichen auslesen und ausgeben Java Basics - Anfänger-Themen 8
philipp Instanznamen mit einem String bestimmen. Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben