ReplaceAll (außer)

Status
Nicht offen für weitere Antworten.
T

Turnschuh

Gast
Hallo zusammen,

ich möchte gerne mit der ReplaceAll - Funktion der Klasse String diverse Zeichen in einem String ersetzen. Aber ich möchte gerne diverse Fälle ausschließen.

Beispiele:
1. Ich möchte alle Buchstaben 'n' ersetzen außer es handelt sich um ein '\n'
2. Ich möchte alle Buchstaben 'b' ersetzen außer es handelt sich um ein '
'

Hat jemand eine Lösung.

Danke und Gruß
 

byte

Top Contributor
Das kannst Du mit Regex realisieren. Du musst ein Pattern schreiben und kannst das dann an die String.replaceAll() übergeben.
 
T

turnschuh

Gast
Vielen dank. Aber so weit war ich auch schon. Ich wollte eigentlich wissen, ob das schon mal jemand gemacht hat und ob er ein Stück funktionierenden Code hat.

Weil
Code:
s.replaceAll("b[^
]", "x")
was meine Idee war nicht funktioniert.

Gruß
 
S

SlaterB

Gast
ein Zeilenumbruch \n ist ein einzelnes Zeichen, das kannst du nicht mit n verwechseln,
oder meinst du \ und n hintereinander?

beim b:

ersetzte alle


durch
<<<<ENTENHAUSEN>>>

dann alle b durch x

und am Ende alle
<<<<ENTENHAUSEN>>>
wieder durch



kannst auch was kürzeres als
<<<<ENTENHAUSEN>>>
nehmen, mir fällt jetzt gerade nicht die 100% sichere Codierung ein
 

Saxony

Top Contributor
Hiho,

zu obigen:

Code:
String s = "bmnkb
lbb
bjklopbhjk";

System.out.println(s);
		
s = s.replaceAll("
", "- Mein Platzhalter am optimalsten einen ohne kleines B :) -");
s = s.replaceAll("b", "x");
s = s.replaceAll("- Mein Platzhalter am optimalsten einen ohne kleines B :) -", "
");
		
System.out.println(s);

bye Saxony
 

Saxony

Top Contributor
SlaterB hat gesagt.:
... mir fällt jetzt gerade nicht die 100% sichere Codierung ein

Ich dachte deswegen schreib ich mal bissl Code. :D

[edit]Hmm oda meinste mit Codierung das Aussehen des Platzhalters?[/edit]

bye Saxony
 

sparrow

Top Contributor
Die hier zuletzt vorgeschlagene Methode ist eindeutig nicht sicher genug.
Die "sichere Codierung" die gesucht wird gibt es nicht.

Im Zweifelsfall kannst du den String auch rund um alle
(ich nenn das mal den geschützten Bereich, weil das ja nicht angepasst werden soll) splitten und jeweils das Ersetzen in den jeweil entstandenen Teilstücken durchführen.



Gruß
Sparrow
 

Illuvatar

Top Contributor
Ja Roar hat Recht. Ich übersetz seine Antwort mal, da sich ja auch nicht jeder mit Regex auskennt :bae:

Code:
String str = //...
str = str.replaceAll ("(?<!\\)n", "hier stand mal nen n");
str = str.replaceAll ("(?<!<)b(?!r>)", "und hier nen b");
 
T

turnschuh

Gast
Sehr geil,

das war das genau das was ich gebraucht habe.

Vielen Dank.
 
S

SlaterB

Gast
natürlich gibt es einen sicheren Weg, jetzt fällt er mir wieder ein:

alle § durch §§ ersetzen
dann alle
durch $§$
dann die die b ersetzen
$§$ durch

und §§ durch §

funktioniert natürlich nur optimal, wenn § und $ nicht im zu ersetzenden Text oder im Ersatztext auftauchen,
da muss man also ein paar kryptische Zeichen frei haben,
ansonsten gehts aber auch noch (zu ersetzender Text + Ersatztext ebenfalls chiffrieren),
auf jeden Fall kann man nicht b als $ oder § verwenden, eine kleine Fallunterscheidung muss man also machen

bei den bisherigen RegEx-Vorschlägen hat man übrigens den Nachteil, dass auch "<buh>" nicht ersetzt wird,
mag spitzfindig sein,
mag vielleicht auch zu vermeiden sein, weiß nicht ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tommy Nightmare String.replaceAll(...) fehlerhaft? Allgemeine Java-Themen 3
N Methoden "a.b".replaceAll(".", "$") Allgemeine Java-Themen 8
N String.replaceAll Problem Allgemeine Java-Themen 5
K replaceAll bei sehr großen String Allgemeine Java-Themen 3
J replaceAll , "[", "]" & regex Allgemeine Java-Themen 12
Airwolf89 ReplaceAll, kann xml- Tag nicht aus String ausschneiden Allgemeine Java-Themen 3
A Probleme mit replaceAll Allgemeine Java-Themen 3
D replaceAll => no such java.lang.NoSuchMethodError Allgemeine Java-Themen 5
Daniel_L RegEx und replaceAll - Probleme mit escapen des Suchbegriffs Allgemeine Java-Themen 4
D Regex-Problem mit replaceAll Allgemeine Java-Themen 5
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
S Geschwindigkeitsproblem bei String.replaceAll Allgemeine Java-Themen 2
Daniel_L Frage zu replaceAll und regulären Ausdrücken Allgemeine Java-Themen 15
T String.replaceAll - warum PatternSyntaxException? Allgemeine Java-Themen 4
F [ und mit replaceAll() ersetzen Allgemeine Java-Themen 2
G replaceAll() Allgemeine Java-Themen 4
@ String replaceAll(" ", ""); Allgemeine Java-Themen 2
karambara ReplaceAll und Backslashes Allgemeine Java-Themen 3
P replaceAll und "\" durch "/" ersetzen Allgemeine Java-Themen 15
P ReplaceAll ersetzt nicht bzw. möchte verketteten string Allgemeine Java-Themen 4
G replaceAll Allgemeine Java-Themen 2
R String.replaceAll $lt; ersetzen Allgemeine Java-Themen 3
G ReplaceAll problem Allgemeine Java-Themen 7
P Alternative zu replaceAll (jdk < 1.4) Allgemeine Java-Themen 14
M Alles außer Muster in String ersetzen Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben