Regulären Ausdruck um alle Sonderzeichen zu ersetzen

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

ich habe einen regulären Ausdruck für die Funktion replaceAll um alle Sonderzeichen durch einen Unterstrich zu ersetzen indem ich einen negativ Zeichenklasse definiert habe. Die Zeile Code sieht wie folgt aus:

Code:
tmpLine = tmpLine.replaceAll("[^a-zA-Z0-9_]", "_");

Jedoch werden Leerzeichen und ^ nicht berücksichtigt. Ich verstehe meine Zeile so dass er alles durch einen Unterstrich ersetzen soll bis auf a-z, A-Z, 0-9 und _ Würde mich über ein Tipp freuen.
 
Hi
Bei mir ersetzt er aber die Zeichen ^, " " auch durch einen Unterstrich.
Oder habe ich dein Problem falsch verstanden?

Lg hendl
 
Hi hendl,

ist korrekt ist mir gerade beim debuggen auch aufgefallen, habe gedacht da liegt das Problem. Aber das Problem liegt beim zweiten replaceAll bei mir, der ersetzt sonst alles korrekt nur wenn der String ein ^ enthält dann komischerweise nicht...hier der Schnipsel:

Code:
int pos = line.indexOf("'"); 
String original = line;
String tmpLine = line.substring(pos+1);
pos = tmpLine.indexOf("'");
tmpLine = tmpLine.substring(0,pos);
String oldLine = tmpLine;
if(tmpLine.length()>0){
	tmpLine = tmpLine.replaceAll("[^a-zA-Z0-9_]", "_");
	view.printString(oldLine + "  ==>  " + tmpLine);
}
original = original.replaceAll(oldLine, tmpLine);
completeStepFile.add(original);
 
Zuletzt bearbeitet:
Es geht um dieses Beispiel:

Code:
Part4^Optical concept 3 ==> Part4_Optical_concept_3

Links steht das Original, dann wurden alle Sonderzeichen korrekt ersetzt durch den Unterstrich. Links steht in der Variable oldLine drin und rechts in tmpLine.
 
Hi
Ich weiß nicht was du mit dem zweiten replaceAll erreichen willst. Da es eigentlich sinnlos ist und wieder die erste Eingabe in original schreibt und nicht ersetzt da er nicht die ersetzten Sonderzeichen findet.

Lg hendl
 
Also die Variable line enthält in dem Beispiel diesen Wert:

Code:
#30807 = PRODUCT ( 'Part4^Optical concept 3', 'Part4^Optical concept 3', '', ( #169343 ) ) ;

Und bei den Werten in den Hochkommas müssen alle Sonderzeichen und Leerzeichen ersetzt werden. Vielleicht wird es jetzt etwas deutlicher.
 
Ok Fehler gefunden, replaceAll ersetzt reg. Ausdruck und replace Zeichenketten -.-
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück