2015-02-24 49 views
-2

獲取文本計數我有以下字符串如何從字符串

Salary and Benefits <span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span> 
Job Security <span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span> 
Career Growth <span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barnone"></span> 
Work Environment <span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span> 
CEO Rating <span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span><span class="read-barfull"></span> 

我需要顯示計數像下面的格式(沒有「讀barfull」的計數)

Salary and Benefits 5 
Job Security 5 
Career Growth 4 
Work Environment 5 
CEO Rating 5 

請幫助我得到格式 提前謝謝

+2

當然,算上'<跨度類= 「讀barfull」>'每行。你還嘗試過什麼? – reto 2015-02-24 13:14:08

+0

我的問題是每個跨班級之前有一些文本是有..如何可以通過使用其文本獲得跨班級名稱? – 2015-02-24 13:15:48

+0

修剪字符串並計算出現就足夠了 – 2015-02-24 13:18:58

回答

3

如果您要計數的「標記」字符串是靜態的(或至少「預定義」),您可以執行以下操作,它使用Apache commons-lang:

String str = "Salary and Benefits <span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span>"; 
String spanText = "<span class=\"read-barfull\"></span>"; 
int count = StringUtils.countMatches(str, spanText); 
+0

Stringutils的包名稱是什麼 – 2015-02-24 13:18:48

+2

http://commons.apache.org/proper/commons-lang/ – 2015-02-24 13:19:48

+0

By the方式,你可以使用正則表達式來做同樣的事情,但它可能看起來相當「討厭」,我會在這種情況下避免它。 – 2015-02-24 13:20:20

0

獨立的邏輯分成兩路

  1. 創建List<String>
  2. 迭代列表&使用搜索字符串緩衝區或拆分單詞並獲得計數器遞增。 {做簡單的邏輯來分隔「讀barfull」和字符串「key」(即沙利和好處)
  3. 從中獲得計數值。
  4. 創建一個Map<String,Integer> 這就是所有。
1

以下是您如何使用Jsoup(因爲您的問題標有它)。總的想法是通過線

  • 讀取HTML線,
  • 獲取文本通過這條線的HTML
  • 選擇所有<span class="read-barfull"></span>元素(無論它們是否爲空或不表示,但如果你可以改變它想) - 簡單select("span.read-barfull")將選定span元素我們
  • 打印計數做到這一點(size()在這裏很有用)

代碼:

String html = "Salary and Benefits <span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span>\r\n" + 
     "Job Security <span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span>\r\n" + 
     "Career Growth <span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barnone\"></span>\r\n" + 
     "Work Environment <span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span>\r\n" + 
     "CEO Rating <span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span><span class=\"read-barfull\"></span>"; 

Scanner sc = new Scanner(html); 
while(sc.hasNextLine()){ 
    Document doc = Jsoup.parse(sc.nextLine()); 
    System.out.println(doc.text()+" "+doc.select("span.read-barfull").size()); 
} 

輸出:

Salary and Benefits 5 
Job Security 5 
Career Growth 4 
Work Environment 5 
CEO Rating 5 
+0

其awsome @pshemo。 它減少了我很多工作 Tq TQ非常多:) – 2015-02-24 13:57:19

+0

@madhukotagiri歡迎您:) – Pshemo 2015-02-24 13:58:52

+0

肯定@pshemo ..................... ............................................ – 2015-02-24 14:09:07