2017-02-03 6 views
3

Ich brauche Hilfe Ich habe eine Zeichenfolge wie dieseFormat HTML-Tag in einen String java

String myString = "The accuracy of a potentiometer (pH meter) is 
        &#177;0.1 mV. A solution contains 1x10<SUP>-4<\/SUP> mol\/L Cl 
        <SUP>-<\/SUP> and 1x10<SUP>-3<\/SUP> mol\/L Ca<SUP>2+<\/SUP>. 
        What is the error in concentration to be expected when measuring 
        these ions with a chloride or a calcium ion selective electrode? 
        <TABLE BORDER=0 ALIGN=CENTER> <TR><TD> <\/TD><TD>&nbsp;<\/TD><TD> 
        <\/TD><\/TR><\/TABLE>"; 

ich diese Zeichenfolge in einem Listview zu zeigen, haben aber offensichtlich, wenn ich es drucken gibt es diese HTML-Tags.

Ich habe schon versucht, die Tags loszuwerden, aber wenn ja, habe ich Informationen verloren (wie -4 als Superscipt). Ich würde gerne wissen, ob es möglich ist, die Zeichenfolge richtig zu formatieren.

Dank

UPDATE:

I unter Verwendung Html.fromHtml (String) Jetzt teilweise gelöst habe

public String processString(String html) { 
    Spanned spanned; 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { 
     spanned = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); 
    } else { 
     spanned = Html.fromHtml(html); 
    } 
    return spanned.toString(); 
} 

das Problem ist, dass der Tag wie ein OBJ-Symbol angezeigt wird image und ich weiß nicht, wie man sie visualisiert.

Ist es möglich?

+0

Apache Commons hat eine Funktion, die html aka entkommt oder Zeichen in HTML-Entities konvertiert. Siehe Funktion escapeHtml: https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html –

+0

Sie könnten dies durch einen HTML-Reader ausführen. Obwohl es kein vollständiges Dokument ist. https://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/HTMLDocument.HTMLReader.html – DejaVuSansMono

+0

Btw. Sprechen Sie über eine Android-ListView? in diesem Fall könnte dies helfen: http://StackOverflow.com/Questions/6502759/How-to-Strip-oder-escape-HTML-Tags-in-android –

Antwort

0

Wenn Sie die HTML-heilen, wird es von vielen Swing-Komponenten gemacht fein, ohne Unterstützung:

import javax.swing.*; 
import java.awt.*; 

public class Se0124 extends JFrame 
{ 
    String myString = "<html>" + 
        "The accuracy of a potentiometer (pH meter) is" + 
        "&#177;0.1 mV. A solution contains 1x10<SUP>-4</SUP> mol/L Cl" + 
        "<SUP>-</SUP> and 1x10<SUP>-3</SUP> mol/L Ca<SUP>2+</SUP>." + 
        "What is the error in concentration to be expected when measuring" + 
        "these ions with a chloride or a calcium ion selective electrode?" + 
        "</html>"; 

    public Se0124() 
    { 
     super ("Se0124"); 
     JPanel mainpanel = new JPanel(); 
     mainpanel.setLayout (new BorderLayout()); 
     this.getContentPane().add (mainpanel); 

     JLabel jl = new JLabel (myString); 
     mainpanel.add (jl, BorderLayout.CENTER); 
     setSize (400, 400); 
     setLocation (100, 100); 
     setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
     setVisible (true); 
    } 

    public static void main (String args[]) 
    { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Se0124(); 
      } 
     }); 
    } 
} 

Wie Sie sehen können, habe ich die hinteren entfernt haben, die leer aussieht. Dann habe ich es in Tags gekapselt. Und ich entfernte die Backslashes von den Schrägstrichen.

Dies kann durch reguläre Ausdrücke erfolgen. Jetzt SUP und SUB sind gut gerendert.