1. Application scenario: Extract plain text from an HTML file or from a String (which is HTML content), remove the page tag;

2. Code 1: replaceAll done

 

[java]  view plain  copy

 

 

  1. // Extract plain text from HTML
  2. public static String StripHT(String strHtml) {  
  3. String txtcontent = strHtml.replaceAll(”
    ] + > “, “”); // Remove the < HTML > tag
  4. txtcontent = txtcontent.replaceAll(“\\s*|\t|\r|\n“, “”); // Remove Spaces, carriage returns, newlines, and tabs from strings
  5.         return txtcontent;  
  6.    }  

Code 2: Regular expression done

 

[java]  view plain  copy

 

 

  1. // Extract plain text from HTML
  2.     public static String Html2Text(String inputString) {  
  3. String htmlStr = inputString; // A string containing HTML tags
  4.         String textStr = “”;  
  5.         java.util.regex.Pattern p_script;  
  6.         java.util.regex.Matcher m_script;  
  7.         java.util.regex.Pattern p_style;  
  8.         java.util.regex.Matcher m_style;  
  9.         java.util.regex.Pattern p_html;  
  10.         java.util.regex.Matcher m_html;  
  11.         try {  
  12. String regEx_script = “<[\\s]*? script[^>]*? >[\\s\\S]*? <[\\s]*? \/[\\s]*? script[\\s]*? > “; // Define a regular expression for script {or
    [^>
  13. String regEx_style = “<[\\s]*? style[^>]*? >[\\s\\S]*? <[\\s]*? \/[\\s]*? style[\\s]*? > “; // Define a regular expression for style {or

    [^>

  14. String regEx_html = “<[^>]+>”; // Define regular expressions for HTML tags
  15.             p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);  
  16.             m_script = p_script.matcher(htmlStr);  
  17. htmlStr = m_script.replaceAll(“”); // Filter script tags
  18.             p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);  
  19.             m_style = p_style.matcher(htmlStr);  
  20. htmlStr = m_style.replaceAll(“”); // Filter the style tag
  21.             p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);  
  22.             m_html = p_html.matcher(htmlStr);  
  23. htmlStr = m_html.replaceAll(“”); // Filter HTML tags
  24.             textStr = htmlStr;  
  25.         } catch (Exception e) {System.err.println(“Html2Text: ” + e.getMessage()); }  
  26. // Remove blank lines
  27.         textStr=textStr.replaceAll(“[ ]+”, ” “);  
  28. textStr=textStr.replaceAll(“(? m)^\\s*$(\\n|\\r\\n)”, “”);
  29. return textStr; // Returns a text string
  30.     }  

3, code 3: HTMLEditorKit ParserCallback fix, Java’s own class

    

[java]  view plain  copy

 

 

  1. package com.util;  
  2.   
  3. import java.io.*;  
  4. import javax.swing.text.html.*;  
  5. import javax.swing.text.html.parser.*;  
  6.   
  7. public class Html2Text extends HTMLEditorKit.ParserCallback {  
  8.      StringBuffer s;  
  9.   
  10.      public Html2Text() {}  
  11.   
  12.      public void parse(Reader in) throws IOException {  
  13.        s = new StringBuffer();  
  14.        ParserDelegator delegator = new ParserDelegator();  
  15.        // the third parameter is TRUE to ignore charset directive  
  16.        delegator.parse(in, this, Boolean.TRUE);  
  17.      }  
  18.   
  19.      public void handleText(char[] text, int pos) {  
  20.        s.append(text);  
  21.      }  
  22.   
  23.      public String getText() {  
  24.        return s.toString();  
  25.      }  
  26.   
  27.      public static void main (String[] args) {  
  28.        try {  
  29.          // the HTML to convert  
  30.          //Reader in=new StringReader(“string”);      
  31.          FileReader in = new FileReader(“java-new.html”);  
  32.          Html2Text parser = new Html2Text();  
  33.          parser.parse(in);  
  34.          in.close();  
  35.          System.out.println(parser.getText());  
  36.        }  
  37.        catch (Exception e) {  
  38.          e.printStackTrace();  
  39.        }  
  40.      }  
  41. }  
  42.