# Mehrere CRLF  entfernen



## manni (7. Okt 2011)

Wie kann ich denn mit replaceAll folgende Sequenz },CRLFCRLF] im String entfernen?
CRLF steht dabei für einen Zeilenumbruch - der aber auch mehrfach dort auftreten kann

ich habs probiert mit 


```
newtext=text.replace("\\}\\,(\\r\\n)*\\]",newpart);
```

klappt aber leider nicht...


----------



## XHelp (7. Okt 2011)

```
replace
```
 kann nicht mit RegEx arbeiten, 
	
	
	
	





```
replaceAll
```
/
	
	
	
	





```
First
```
 schon.


----------



## HoaX (7. Okt 2011)

String#replace will nunmal keinen Regulären Ausdruck. Du willst lieber String#replaceAll verwenden.
Außerdem willst du ? statt * schreiben, da sonst auch },] entfernt wird, also ohne ein einziges CRLF dazwischen.


----------



## XHelp (7. Okt 2011)

HoaX hat gesagt.:


> Außerdem willst du ? statt * schreiben



Und mit 
	
	
	
	





```
?
```
 meinst du 
	
	
	
	





```
+
```
?


----------



## HoaX (7. Okt 2011)

XHelp hat gesagt.:


> Und mit
> 
> 
> 
> ...



Richtig, warum liegen die Tasten auch so dicht beieinander ... 
Alternativ: Ich wollte nur sehn ob du aufpasst!


----------



## manni (7. Okt 2011)

ich meinte eigentlich replaceAll ;-)


jetzt hab ichs so probiert, das klappt aber auch nicht:

```
newtext=text.replaceAll("\\}\\,(\\r\\n)+\\]",newpart);
```


----------



## XHelp (8. Okt 2011)

Zeig mehr Code, das sollte eigentlich gehen


----------



## HoaX (8. Okt 2011)

```
groovy:000> s = "bla},\r\n\r\n\r\n]blubb"
===> bla},


]blubb
groovy:000> s.replaceAll("\\}\\,(\\r\\n)+\\]", " XXXX ")
===> bla XXXX blubb
groovy:000>
```
Jup, sollte gehn.


----------



## manni (8. Okt 2011)

das ist ein teil des textfiles 


          "type": "bin"
        }
      ]
    },

  ]
},{"property": {

hier möchte ich diesen Teil:
    },

  ]

 an allen Stellen ersetzen durch:
}]

und der Code sieht so aus:

```
...
            String newtext = oldtext.replaceAll("\\}\\{\\{", ",");
            newtext = newtext.replaceAll("\\}\\}\\{", "\\}\\,\\{");   
            newtext = newtext.replaceAll("\\}\\,(\\r\\n)+\\]", "\\}\\]");  
            newtext = "["+newtext;
...
```


----------



## HoaX (8. Okt 2011)

Was soll denn das ganze werden wenn es fertig ist? Für mich schaut das irgendwie nach JSON aus...


----------



## XHelp (8. Okt 2011)

Und du bist dir sicher, dass der Zeilenumbruch wirklich 
	
	
	
	





```
\r\n
```
 ist? Vlt ist es ja nur 
	
	
	
	





```
\n
```
, weil:

```
String oldtext = "\"type\": \"bin\"\r\n" +
	"}\r\n" +
	"]\r\n" +
	"},\r\n" +
	"\r\n" +
	"]\r\n" +
	"},{\"property\": {";
String newtext = oldtext.replaceAll("\\}\\{\\{", ",");
newtext = newtext.replaceAll("\\}\\}\\{", "\\}\\,\\{");   
newtext = newtext.replaceAll("\\}\\,(\\r\\n)+\\]", "\\}\\]"); 
System.out.println(newtext);
```
ergibt:

```
"type": "bin"
}
]
}]
},{"property": {
```


----------



## manni (8. Okt 2011)

naja, ich lese vorher ein File ein und setzte immer am Zeilenende "\r\n" dazu ;-)

ausserdem sehe ich in notepad++ die CRLF dahinter...


----------



## XHelp (8. Okt 2011)

Lade mal den Ausschnitt als Datei hier hoch, dann könnte man vlt was erkennen.
Oder am besten Datei *UND* KSKB


----------



## manni (9. Okt 2011)

danke für die Tipps jetzt habe ich den Fehler gefunden.
Da es ein File ist, dass ich hier einlese, liegts daran, dass es Leerzeilen gibt mit Leerzeichen und einem CRLF.

Daher komme ich jetzt mit folgendem Code zur richtigen Lösung:


```
newtext=text.replace("\\}\\,\\s+(\r\n)+\\]",newpart);
```


----------

