Parser Problem

DerKoenig

Mitglied
Guten Tag,

ich hab folgendes Problem.

Durch Java soll ein Bericht in HTML erstellt werden. Das Problem ist, in dem Bericht stehen lauter \n drin. Also als String.

Nun lese ich das komplette File in eine String Variable ein und es sieht in Eclipse beim Debuggen identisch mit dem Dateinhalt aus (ist ja auch relativ simple mit readline und append)

Anschließend gebe ich den String an eine statische Methode, die auch für das zusammenbauen des HTML Files verantwortlich ist, aber vorher läuft da schon etwas nicht richtig.

Und zwar mache ich:

dateiinhalt = dateiinhalt.replaceALL("\n", "<br>");
auch mit \\n habe ich es bereits probiert. Lese ich die Datei ein ersetzt er die \n einfach nicht.

Kopiere ich den Text aus der Datei manuell und übergeb den als Parameter, dann funktionierts.

WOOOOOOO is das Problem :-(
 
Hat sicherledigt.


Die Lösung:

Eine Escape-Sequenz reicht nicht.


"\\\\n"

Ist die Lösung, habs eigentlich nur durch Zufall probiert.

Vermutung: Um \n zu bekommen:

\ = Escape für \ von \n, jetzt wüsste er dass es sich um das steuerzeichen \n handelt. Also sag ich ihm mit einem weiteren \ der auch wiederrum Escaped werden muss, dass es sich um einen String handelt.

korrekt? :-O :-(
 
Heyho.

Also wenn das eine reine String-Operation ist, müsste das eigentlich schon funktionieren. Ich hab das grad mal an einem Beispiel getestet und es ersetzt das Leerzeichen sowohl mit
Java:
string.replace("\n","<br>");
als auch mit
Java:
string.replaceAll("\n","<br>");
erfolgreich.

Wenn du eine bestimmte Zeichenkette ersetzen willst, würde ich übrigens nur die "replace"-Methode verwenden. Mit "replaceAll" ist das eher ein Glückstreffer, da der erste Parameter kein String sondern ein Regular Expression (RegEx) ist.

Liest du den String denn aus einer Text-Datei oder direkt aus einer Java-GUI?
Wenn du den Text aus einer Datei ausliest, versuch mal folgendes:
Java:
string.replace("\r\n","<br>");
Bei ASCII-Textdateien sieht das Carriage Return meines Wissens so aus.

Gruß
miffi
 
Zuletzt bearbeitet:
Wenn ich es richtig verstanden habe, dann redet er garnicht von einem carriage return, sondern von dem string \n im Text, aber wo er ganz recht hat, replaced man einfach \n, will java den Zeilenumbruch ersetzen und nicht den String.
 
Stimmt, da hab ich wohl was übersehen.... Sorry für das Missverständnis!

In dem Fall nur noch den Tipp mit der "replace"-Methode beachten ;)
 

Neue Beiträge

Zurück