2011-05-17 56 views
9

我有一些html文檔,我需要返回文檔中的字數。這個計數應該只包括實際的文本(所以沒有html標籤,例如html,br等)。如何計算HTML源代碼中的字數(文本)

任何想法如何做到這一點?當然,我寧願重新使用一些代碼。

感謝,

阿薩夫

回答

11
  • 剝離出的HTML標籤,讓文本內容,重用線Jsoup

  • 讀取文件中的行,持有Map<String, Integer> wordToCountMap和閱讀並運行在Map

+0

+1 @Jigar喬希解決方案非常確切的答案。 – Boro 2011-05-17 10:18:56

+0

+1使用JSoup – 2011-05-17 10:20:59

+0

您已經錯過了剝離HTML後實際標記所得文本的(非平凡)步驟 – 2011-05-17 10:53:44

0

我想補充一個額外的步驟Jigar的回答是:

  • 解析出使用JSoup或傑里科或dom4j的
  • Tokenise生成的文本文檔文本。這取決於你對「單詞」的定義。它不太可能像在空間上分裂一樣簡單。您需要處理標點符號等。因此,請查看各種Tokeniser可用的例如Lucene或Stanford NLP項目。以下是您將遇到的一些簡單示例:

    "Today I'm going to New York!" - 「我」是一個字還是兩個字?那麼「紐約」呢?

    "We applied two meta-filters in the analysis" - 「meta-filter」是一個字還是兩個字?

而關於格式錯誤的文字,例如在句末的空間錯過了什麼:

"So we went there.And on arrival..." 

Tokenising是棘手...

  • 迭代通過你的令牌和對它們進行計數,例如使用HashMap。
3

與jsoup

private int countWords(String html) throws Exception { 
    org.jsoup.nodes.Document dom = Jsoup.parse(html); 
    String text = dom.text(); 

    return text.split(" ").length; 
}