2010-12-13 32 views
9

私はスパムとハムの電子メールを読み取り、分離する1つのプログラムを書いています。今私は、Javaのbufferedreaderクラスを使用してそれを読んでいます。私は「(」など、不要な文字を削除することができています「」など、でReplaceAll()メソッドを使用して。私は&アンプを含め、あまりにもhtmlタグを削除する。達成するためにどのようにこれはjavaを使用して文字列からhtmlタグを削除

感謝を!

EDIT:。。応答のための おかげで、私はすでに私のニーズの両方を組み合わせて、一つに置く方法を、正規表現を持っています私は今使用している相続人は正規表現

lines.replaceAll("[^a-zA-Z]", " ") 

注:私はから行を取得しています その他の提案plss?

+0

私はcomplileエラーをworking..noないそのJsoup..butしようとした、その単に機能していない... – Maverick

+1

同様のトピックhttp://stackoverflow.com/questions/1699313/how-to-remove-html -tag-in-java http://stackoverflow.com/questions/240546/removing-html-from-a-java-string –

答えて

35

多分これは動作します:

String noHTMLString = htmlString.replaceAll("\\<.*?>",""); 

それは文字列内のすべてのHTMLタグを削除するregular expressionsを使用しています。

具体的には、文字列からすべてのXMLのようなタグを削除します。したがって< 1234>は有効なHTMLタグではなくても削除されます。しかし、それはほとんどの目的と目的のために良いです。

これが役に立ちます。

+0

2番目の呼び出しは、replaceAll( "&.*?;"、 "") 'のようにエンティティを取り出します参照。彼らが表現している文字に戻すのではなく、単にこれを取り除きたいと思うのは私にとって奇妙なことです。 –

+0

非常に便利で強力なソリューションです。 –

+4

regexには注意してください。これは完全な解決策ではありません。これは不要な文字も置き換えます - > "a d"の結果が "a"になります。 –

3

あなたがHTMLを取り除くために、いくつかの軽量な解析を行うことになるでしょう:

String extractText(String html) throws IOException { 
    final ArrayList<String> list = new ArrayList<String>(); 

    ParserDelegator parserDelegator = new ParserDelegator(); 
    ParserCallback parserCallback = new ParserCallback() { 
     public void handleText(final char[] data, final int pos) { 
      list.add(new String(data)); 
     } 
     public void handleStartTag(Tag tag, MutableAttributeSet attribute, int pos) { } 
     public void handleEndTag(Tag t, final int pos) { } 
     public void handleSimpleTag(Tag t, MutableAttributeSet a, final int pos) { } 
     public void handleComment(final char[] data, final int pos) { } 
     public void handleError(final java.lang.String errMsg, final int pos) { } 
    }; 
    parserDelegator.parse(new StringReader(html), parserCallback, true); 

    String text = ""; 

    for(String s : list) { 
     text += " " + s; 
    } 

    return text; 
} 
8

JSOUP

public static String html2text(String html) { 
    return Jsoup.parse(html).text(); 
} 
+1

mavenユーザの場合、最新版のmaven reposへのリンク:https://mvnrepository.com/artifact/org.jsoup/jsoup – Ben

-1

輸入java.io. *;

public class Html2TextWithRegExp { 


public static void main (String[] args) throws Exception{ 
StringBuilder sb = new StringBuilder(); 
BufferedReader br = new BufferedReader(new FileReader("java-new.html")); 
String line; 
while ((line=br.readLine()) != null) { 
    sb.append(line); 
    // or 
    // sb.append(line).append(System.getProperty("line.separator")); 
} 
String nohtml = sb.toString().replaceAll("\\<.*?>",""); 
System.out.println(nohtml); 
} 
} 
+0

なぜ空のコンストラクタを作成しましたか? –

関連する問題