2017-02-03 1 views
3

Мне нужна помощь У меня есть строка, как этотФормат HTML тегов в строку 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>"; 

я должен показать эту строку в ListView, но, очевидно, когда я печатаю это есть эти HTML-теги.

Я уже пытался избавиться от тегов, но если это так, я потерял информацию (например, -4 как superscipt). Я хотел бы знать, можно ли форматировать строку надлежащим образом.

Благодаря

UPDATE:

я частично решена с помощью Html.fromHtml (String)

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(); 
} 

Теперь проблема в том, что тег отображается как значок OBJ image и я не знаю, как их визуализировать.

Возможно ли это?

+0

У сообщества Apache есть функция, которая ускользает от html aka, преобразует символы в объекты HTML. См. Функцию escapeHtml: https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html –

+0

Вы можете запустить это через HTML-ридер. Хотя это не полный документ. https://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/HTMLDocument.HTMLReader.html – DejaVuSansMono

+0

КПП. Вы говорите об андроиде ListView? в этом случае это может помочь: http://stackoverflow.com/questions/6502759/how-to-strip-or-escape-html-tags-in-android –

ответ

0

Если вы залечить HTML, воздастся устраивало многих компонентов Swing, без посторонней помощи:

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(); 
      } 
     }); 
    } 
} 

Как вы можете видеть, я удалил буксировку, который выглядит пустым. Затем я закрыл его тегами. И я удалил обратную косую черту с косых черт.

Это можно сделать с помощью регулярных выражений. Теперь SUP и SUB отображаются отлично.