# replaceAll , "[", "]" & regex



## JoeyP1984 (30. Jan 2010)

ich hab da ein kleines Problem, das bestimt schnell beantwortet ist, aber ich komm einfach nicht mehr weiter...

[Java]
ArrayList text = new ArrayList();
String text2 = "";

text2 = text.toString();
text2 = text2.replaceAll(", ", "");
text2 = text2.replaceAll("]", "");
text2 = text2.replaceAll("[", "");
[/Java]

Das Problem liegt in den letzten 2 zeilen. 
So wie ich das jetzt geschrieben hab kommt ein Fehler zur Laufzeit: 
"PatternSyntaxException: Unclosed character class near index 1 \["

ist ja auch klar, die klammern werden für regex verwendet, aber wie
sag ich als regex dass ich die klammer will?

ich habs auch schon versucht mit 

[Java]
text2 = text2.replaceAll("\]", "");
text2 = text2.replaceAll("\[", "");
[/Java]

Da bringt der Compiler schon beim übersetzen fehler: 
"Illegal escape character"

auch die Version mit {[} und {\[} hab ich versucht, aber immer wieder fehler.....

danke schonmal im vorraus


----------



## eRaaaa (30. Jan 2010)

```
text2 = text2.replaceAll("\\]", "");
	text2 = text2.replaceAll("\\[", "");
```

Aber wieso durchläufst du eig. nicht die ArrayList selbst und bastelst dir den String selbst zusammen?


----------



## JoeyP1984 (30. Jan 2010)

na ja, find's so schon einfacher, so muss ich nur die ", " und die klammern entfernen
jetzt mal abgesehen von dem klammerproblem da...

aber danke, jetzt klappts....so ein doofer fehler....


----------



## Landei (30. Jan 2010)

Das wird ziemlich lahm für längere Listen. Besser:

```
List<String> list = ...
StringBuilder sb = new StringBuilder();
for(String s: list) sb.append(s);
String text = sb.toString();
```


----------



## eRaaaa (30. Jan 2010)

Landei hat gesagt.:


> Das wird ziemlich lahm für längere Listen. Besser:



Und vor allem wird dadurch evtl. der String/Objekt falsch ausgegeben wenn dieser/die toString des Objektes selbst auch eine der Klammern/Komma enthält!


----------



## JoeyP1984 (30. Jan 2010)

ach ja daran hab ich ja net gedacht...
aber als regex kann man doch irgendwie mit ^ den anfang der datei und mit $ das ende der datei angeben
nur wie genau das aussieht weiß ich net
das müsst dann irgendwie so ^\\[ und \\[$ aussehen oder?


----------



## eRaaaa (30. Jan 2010)

JoeyP1984 hat gesagt.:


> ach ja daran hab ich ja net gedacht...
> aber als regex kann man doch irgendwie mit ^ den anfang der datei und mit $ das ende der datei angeben
> nur wie genau das aussieht weiß ich net
> das müsst dann irgendwie so ^\\[ und \\[$ aussehen oder?



Ja, fast --> \\]$ 

Allerdings könntest du dann auch direkt einen subString nehmen ohne ersten und letzten Buchstaben, oder replaceFirst oder der gleichen...aber was passt dir denn an der Lösung von Landei nicht? Denn so hättest du immer noch das Problem das auch alle Kommata innerhalb des Objekts verschwinden.


----------



## JoeyP1984 (30. Jan 2010)

stimmt...daran hab ich auch net gedacht ^^
ok, ich probier mal die lösung und sag dann bescheid wie's gelaufen ist...


----------



## JoeyP1984 (30. Jan 2010)

ok, ich hab nur ein kleines Problem und zwar mit der ersten zeile, ich kenn List net, was ist das, was steht da in der variable list dann drin? Aber vor allem WAS ist das? hab mir grad die java Api angesehen und wär nett wenn mir das einer mit eigenen worten erklären könnt ^^ weil wenn ich das richtig verstanden hab, wird durch List ein Grafisches Objekt und das Programm soll ja in der Shell aufgerufen werden: Java Replace suchString ersetzungsString Datei_1 Datei_2 Datei_3 ... Datei_n


----------



## eRaaaa (30. Jan 2010)

JoeyP1984 hat gesagt.:


> weil wenn ich das richtig verstanden hab, wird durch List ein Grafisches Objekt



Dann hast du die falsche Doku angeschaut, wahrscheinlich java.awt.List..gemeint ist aber List. ArrayList implementiert List, List ist einfach ein Interface. Das in den Klammern nennt man generics Galileo Computing :: Java ist auch eine Insel – Generics


----------



## Orri (24. Feb 2010)

Vllt kann mir auch einer helfen  

möchte die Kommas im String durch Punkte ersetzen

Code: 

```
void changeString(String str){
                          str.replace(',' , '.');
		dataFile3 = str;                     //dem Quellstring zuweisen
		System.out.println(str);          //Ausgabe zum Testen
```

Problem: Der String ist genauso so wie vorher. Garkeine Änderung


----------



## SlaterB (24. Feb 2010)

str = str.replace(',' , '.');


----------



## Orri (24. Feb 2010)

LOL oh danke dir


----------

