Java n'est pas de traiter “\n” nouvelle ligne lorsqu'elles sont récupérées à partir de la colonne de Base de données
Je suis confronté à un problème bizarre.
Ce que je fais c'est que je suis le stockage de certaines valeurs en DB(oracle 11g) varchar2 et récupérer les valeurs en java et en travaillant avec les données extraites.
Maintenant, j'ai \n comme une valeur en DB et de le faire en java à l'aide de rs.getString()
. Je suis juste valeur \n
.
String newLine=rs.getString("column_value");
Maintenant, je lis une page HTML et d'obtenir l'ensemble de la page de chaîne.Supposons que la page a 3 lignes de chaque depiciting ssome informations comme ci-dessous:
Time: 08 AM - 11 AM
Duration : 36 minutes
Maintenant dans le code, je vais passer "Durée :" à une méthode et qui sera de retour moi "36 minutes".
Ce que la logique que j'utilise est-je obtenir de l'indice de "Durée :" et de lire jusqu'à "\n" est rencontré.Le Code fonctionne très bien si je déclare le saut de ligne comme
String newLine= "\n";
Mais si je l'obtenir à partir DB il ne fonctionne pas.
Je sais que je n'ai pas besoin de les stocker dans la bd, mais je ne veux pas coder en dur ces éléments. J'ai donc de le stocker dans DB seulement. Quelqu'un peut-il m'aider???
Notez que le string
\n
stockées dans une base de données sera retourné comme "\\n"
en Java.Droit, et c'est ça le problème: La chaîne à partir de la DB est deux caractères,
'\'
et 'n'
, ce qui est équivalent à la Java représentation "\\n"
qui est encore une fois pas le caractère de saut de ligne qui serait '\n'
.Beaucoup 🙂 - Pour la référence, voir aussi: stackoverflow.com/questions/1367322/...
Il y a un caractère de saut de ligne dans la base de données au lieu de les deux caractères '\' 'n'. Puis Java va le voir comme un caractère de saut de ligne.
OriginalL'auteur Anubhab | 2013-03-28
Vous devez vous connecter pour publier un commentaire.
Si lorsque vous imprimez le
newLine
vous obtenez\n
dans la sortie, vous risquez de ne pas encoder la chaîne que vous obtenez à partir de la DB. L'Apache Commons Lang avoir une méthode pour que:http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.io.Writer, java.lang.Chaîne de caractères)
Donc, vous avez simplement à appeler
Espère que cette aide
Je n'ai jamais entendu parler avant propos StringEscapeUtils. Excellente solution ... merci 🙂
OriginalL'auteur david
essayer cette
line.separator
propriété est déterminée par le client environnement du système et peut être différent sur différents systèmes, tout en une seule représentation peuvent être stockées dans la base de données. Par conséquent, cela peut fonctionner sur certaines des clients et échouent sur les autres, étant donné la très même les données de la DB.OriginalL'auteur Ankit
Le problème est que la base de données est l'ajout d'un caractère d'échappement pour votre chaîne, si vous vous retrouvez avec \\n au lieu de \n. Pour corriger cela, vous pourriez juste remplacer \\n \n.
Si vous l'imprimez, vous bénéficiez de:
C'est une chaîne de caractères à partir de la db
Ce devrait être une nouvelle ligne, mais ne l'est pas. //ainsi il est maintenant..
OriginalL'auteur Zelnoth
Si vous êtes à la récupération de vos données à une page HTML, vous pouvez effectuer les opérations suivantes:
Si vous êtes à la récupération de vos données à autre chose, vous pouvez le faire:
OriginalL'auteur Josiah Thobejane