Java ist nicht die Behandlung "\n" als neue Zeile beim abrufen aus der Datenbank Spalte
Stehe ich vor einem seltsamen problem.
Was ich Tue, ich bin die Speicherung einige Werte in DB(oracle 11g) als varchar2 und abrufen der Werte in java und der Arbeit mit den abgerufenen Daten.
Jetzt habe ich \n als einen Wert in der DB und bekommen es in java mit rs.getString()
. Ich bin immer ordnungsgemäße Wert \n
.
String newLine=rs.getString("column_value");
Nun, ich parse eine HTML-Seite und Holen Sie sich die ganze Seite als string.Nehmen wir an, die Seite hat 3 Zeilen mit je depiciting ssome Infos unter:
Time: 08 AM - 11 AM
Duration : 36 minutes
Nun im code, den ich passieren "Dauer :" auf eine Methode, und das wird mich zurückbringen "36 Minuten".
Was Logik, die ich verwenden, bekomme ich den index von "Dauer :" und Lesen, bis "\n" aufgetreten ist.Code funktioniert gut, wenn ich erklären das newline als
String newLine= "\n";
Aber wenn ich es aus der DB funktioniert es nicht.
Ich weiß, dass ich nicht brauchen, speichern Sie diese in der DB, aber ich will nicht zu fest dieser Artikel. So habe ich, um es zu speichern in der DB nur. Kann mir jemand helfen in dieser???
- könnten Sie etwas klar, was u meinst mit "wenn ich Jetzt eine Reihe von Linien und möchten zu brechen, es mit Hilfe newline java ist nicht zu interpretieren als neue Zeile."
- Bist du auf Windows? Tut
\r\n
Arbeit? \n
ist\n
, unabhängig davon, wo Sie es bekommen. Wenn Sie überprüft haben, dass der Wert in der variable ist korrekt, das Problem liegt an anderer Stelle, da Java nicht auf Magische Weise wissen, wo der Wert der Variablen kommt.- Hallo, ist das '\n' gespeichert in der DB als 2 Zeichen, '\' und 'n'?
- Beachten Sie, dass die Zeichenfolge
\n
in einer Datenbank gespeichert werden zurückgegeben, wie"\\n"
in Java. - bitte überprüfen Sie die Bearbeiten
- in der DB gespeichert ist, als einzelne Zeichenfolge '\n'
- aber wenn ich versuche, drucken Sie den Wert der variable Drucke '\n' nur
- Genau das gleiche wie beim drucken
"\\n"
. Versuchen Sie zum Beispiel zu drucken"\\n\n\\n"
um zu sehen, was das bedeutet. - Ein weiterer Versuch: Was bedeutetnewLine.length()
zurück? - ich habe gerade überprüft die Länge..es ist Druck
2
. - Genau, und das ist das problem: Der string aus der DB ist zwei Zeichen lang
'\'
und'n'
entspricht die Java-Repräsentation"\\n"
was wiederum nicht das newline-Zeichen, das wäre'\n'
. - dachte die Lösung .. 🙂
- Toll 🙂 - Referenz siehe auch: stackoverflow.com/questions/1367322/...
- Isnt es eine Möglichkeit oracle können es in einer Weise, dass java interpretiert es richtig?
- Es muss ein newline-chracter in der Datenbank anstelle der zwei Zeichen '\' 'n'. Dann Java sieht es wie ein newline-Zeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn beim drucken die
newLine
erhalten Sie\n
in der Ausgabe, die Sie haben könnten, um unescape die Zeichenfolge, die Sie von der DB. Die Apache Commons Lang, haben eine Methode für die:http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.io.Writer, java.lang.String)
So, Sie hätte einfach anrufen
Hoffe, das hilft
versuchen, diese
line.separator
Eigenschaft wird bestimmt durch die client system-Umgebung und kann auf unterschiedlichen Systemen unterschiedlich sein, während nur eine Art der Darstellung können gespeichert werden in der DB. Daher, dies kann die Arbeit auf einigen clients und nicht auf andere gegeben, die selben Daten aus der DB.Das problem ist, dass die Datenbank hinzufügen eines escape-Zeichen, um die Zeichenfolge, so dass Sie am Ende mit \\n statt \n Um dies zu beheben könnte man einfach ersetzen Sie \\n mit \n ein.
Wenn Sie drucken diese erhalten Sie:
Dies ist ein string aus der db
Dies sollte eine neue Zeile, aber nicht ist. //nun, es ist jetzt..
Wenn Sie beim abrufen Ihrer Daten in eine HTML-Seite, können Sie Folgendes tun:
Wenn Sie beim abrufen Ihrer Daten, um etwas anderes, Sie kann dies tun: