8
votes

Obtenir du texte brut de JTextpane

Dans mon application, j'utilise un jtextpane code> pour afficher certaines informations de journal. Comme je tiens à Hightlight, des lignes spécifiques dans ce texte (par exemple, les messages d'erreur), je définis le contenttype code> comme " texte / html code>". De cette façon, je peux formater mon texte.

Maintenant, je crée un jbutton qui copie le contenu de ce jtextpane code> dans le presse-papiers. Cette partie est facile, mais mon problème est que lorsque j'appelle mytextpane.getext () code>, je reçois le code HTML, tel que: p> xxx pré>

Au lieu d'obtenir uniquement le contenu brut: P>

blabla
foobar
blabla


0 commentaires

4 Réponses :


2
votes

Vous devez le faire vous-même malheureusement. Imaginez si une partie du contenu était spécifique HTML, par exemple des images - la représentation du texte n'est pas claire. Inclure le texte alt ou non par exemple.


0 commentaires

2
votes

(est REGEXP autorisé? Ce n'est pas analysé, n'est-ce pas)

Prenez le résultat GetText () et utilisez String.ReplaceAll () pour filtrer toutes les balises. Qu'une garniture () pour éliminer les espaces bleus de direction et de fin. Pour les espaces blanchisseurs entre votre premier et vous dernière «BLABLA», je ne vois pas de solution générale. Peut-être que vous pouvez renversé le reste autour de CRLF et couper toutes les cordes à nouveau.

(Je n'ai pas d'expert de Regexp - Peut-être que quelqu'un peut fournir au reguisement et gagner une certaine réputation;))

Modifier

.. Je viens de supposer que vous n'utilisez pas << / code> et > dans votre texte - sinon .. Dites, c'est un défi.


0 commentaires

5
votes

Basé sur la réponse acceptée à: Supprimer HTML à partir d'une chaîne Java xxx

version légèrement modifiée de la classe html2text trouvé sur la réponse que j'ai liée à xxx

si nécessaire Une manipulation plus fine à grain envisager de mettre en œuvre plus d'une interface définie par htmleditorkit.parsCallback


0 commentaires

18
votes

Pas besoin d'utiliser le parseCallback. Utilisez simplement:

textPane.getDocument().getText(0, textPane.getDocument().getLength()) );


2 commentaires

C'est vraiment une très bonne solution ... Sauf que j'ai perdu toutes les pauses de la ligne, puis ma chaîne finale n'est qu'en une ligne. Dommage, parce que j'ai vraiment aimé cette solution!


Oui, le document ne stocke pas les pauses de la ligne, ils ont ajouté manuellement par l'autre solution.