2013-12-19 41 views
0

我一直在思考如何實現一個邏輯來解析這段代碼,我有。我目前正在使用jsoup,Java和Android。使用Java和jsoup解析特定的HTML代碼

基本結構顯示(一個我正在尋找):

22:48 爲url1:隨機消息

22:44 URL2:更隨機的消息!

的代碼(存儲在Element對象,這是由jsoup提供):

22:48 
<strong> <a href="www.randomUrl.com">url1</a>:</strong> Random message.22:44 
<strong> <a href="www.randomUrl.com">url2</a>:</strong> Even more random message!22.42 
<strong> <a href="www.randomUrl.com">url3</a>:</strong> This is a dumb message9922.20 
<strong> <a href="www.randomUrl.com">url4</a>:</strong> This is a dumb message3 

我多麼希望它被 「清理」:

22:48 <strong> <a href="www.randomUrl.com">url1</a>:</strong> Random message. 
22:44 <strong> <a href="www.randomUrl.com">url2</a>:</strong> Even more random message! 
22.42 <strong> <a href="www.randomUrl.com">url3</a>:</strong> This is a dumb message99 
22.20 <strong> <a href="www.randomUrl.com">url4</a>:</strong> This is a dumb message3 

我當然不記住一行節省時間,url和消息到一些專用的數組列表,然後刪除html。但我期待着聽到你將如何處理這種解析。由於問題是隨機消息可以是任何類型的字符串,這意味着它可以包含一個時間(22:33)。所以我不能通過基於時間的正則表達式來分隔行。

我在想,如果正確的做法是通過同時使用時間和強元素來解析它,因爲強元素似乎總是開始一個新行。

謝謝!

回答

0

JSoup是一個非常有價值的圖書館。然而,如果沒有明確的開始和結束標籤進行明確的界定,部分文本的猥褻改變就不容易實現。

因爲所有你討厭的時間戳似乎總是跟着一個<強>標籤,你可以匹配所有序列中刪除時間「TIME(最終其次是空格)<強>」。

這可以用一個相當簡單的regex String.replaceAll來完成:

html = html.replaceAll("(\\d{2}[:\\.]\\d{2})(\\s*<strong>)","$2"); 
0

字符串Z = s.replaceAll(「(\\ d {2} [:\\] \\ d {2- })\\ s * [\ n \ r] \\ s *「,」\ n $ 1「).trim();