wie kann man die Leerzeichen zwischen zwei Zeichen in einem String entfernen.
Und zwar habe ich folgendes:
Java:
String text ="text + java - forum hallo";
Ich will z.B., daß NUR die Leerzeichen zwischen den Sonderzeichen + und - dem nächsten
Wort entfernt werden
sollen. Es soll also im Prinzip so aussehen:
Hallo.
Ich würde hier mit der 'replace'-Methode von String arbeiten.
Man könnte mit der Methode zuerst ALLE Leerzeichen ersetzen, und danach dann für jedes Operationszeichen (+-) eine Replace-Operation machen, die diese Operationszeichen durch ein vorgestelltes Leerzeichen ersetzen.
Edit:
Erkenne gerade, dass dies so ja doch nicht geht, da ja dann auch das folgenden Leerzeichen entfernt wird: "forum hallo"
Andere Lösung:
In einer Schleife immer wieder
- ALLE "+ " durch "+" ersetzen, und zusätzlich
- ALLE "- " durch "-" ersetzen,
solange ein "+ " oder "- " noch im String vorhanden ist.
Hallo.
Ich würde hier mit der 'replace'-Methode von String arbeiten.
Man könnte mit der Methode zuerst ALLE Leerzeichen ersetzen, und danach dann für jedes Operationszeichen (+-) eine Replace-Operation machen, die diese Operationszeichen durch ein vorgestelltes Leerzeichen ersetzen.
Nein, dann würdest du auch die anderen Leerzeichen z.B. am Ende zwischen forum und hallo wegschneiden. Es geht eventuell mit nur einem einzigen replaceAll, dafür muss aber der TO erst einmal sagen was er denn nun genau haben will!
String text ="text + java - forum hallo";while(text.contains("+ ")|| text.contains("- ")){
text = text.replaceAll("\\+ ","+");
text = text.replaceAll("- ","-");}
In einer Schleife immer wieder
- ALLE "+ " durch "+" ersetzen, und zusätzlich
- ALLE "- " durch "-" ersetzen,
solange ein "+ " oder "- " noch im String vorhanden ist.
@eRaaa:
Kannst du mir bitte erläutern, was deine Smileys bedeuten sollen. Kann mir keinen Reim drauf machen, was du damit aussagen willst.
Wenn man das Beispiel sieht und dann noch einmal den Text liest, dann kommt man schon darauf, was gefordert wird. Allein das Beispiel ist ja schon aussagefähig.
Kompliment für deinen AllInOne-Code. Aber für einen im 'Anfänger'-Forum Fragenden sollte es dann evtl. doch eine nachvollziehende, mit einfachen Befehlen umzusetzende Methode sein.
Meine Smileys sollen deinen Code in Frage stellen
Du hast wohl den falschen Anfangsstring genommen, des weiteren musst du das + escapen da es sich um einen regulären Ausdruck handelt!
Und nein, man sollte schon genau beschreiben was man will und wenn man schon ein Beispiel anfügt (egal ob als TO oder als Antwortender) sollte es auch zu dem Beschriebenen passen und vor allem auch funktionieren oder besser weglassen und nur den TO auf die richtige Lösung versuchen hinzuleiten, das bringt am Meisten!.
@eRaaa:
Herzlichen Danke für den Hinweis, habe es berichtigt. War ja doch gut, dass ich nachgefragt habe. Möchte ja auch keinen fehlerhaften Code hier veröffentlichen. Smile
@Sinus:
'TO' ist mir bisher auch nicht geläufig, aber ich interpretiere dies als "ThreadOpener".
Wenn du meinen Code ausprobieren willst, dann bitte den nun berichtigten.
die Beispiele müssten doch plausibel genug sein? Ich will eigentlich einfach nur, dass alle
Sonderzeichen in einem String unmittelbar nach jedem Wort stehen, das ist alles...
Hallo.
Damit sagst du erstens nichts darüber aus, ob du nun mit den Vorschlägen zurechtkommst.
Zweitens geht deine aktuelle Aussage jetzt ganz und gar nicht mit deinem Beispiel/Beschreibung konform, wo NACH allen Sonderzeichen die Leerzeichen entfernt werden sollten, damit Wort direkt auf Sonderzeichen folgt.
Nun sollen alle Sonderzeichen unmittelbar nach einem Wort stehen, also gerade das Gegenteil davon.
Oder möchtest du beides haben?
Da ist bosher weder Beispiel noch Beschreibung plausibel genug. Sorry.
ich habe folgendes geschrieben und anscheinend funktioniert das so:
Java:
publicstaticvoidtest(){String text ="text - java - forum hallo";System.out.println(text);while(text.contains("- ")){
text = text.replaceAll("- ","-");}System.out.println(text);}
Nur wenn ich + statt - verwende bekomme ich im Debug Fenster die Fehlermeldung ... line: not available
Java:
publicstaticvoidtest(){String text ="text + java + forum hallo";System.out.println(text);while(text.contains("+ ")){
text = text.replaceAll("+ ","+");}System.out.println(text);}