2014-01-17 111 views
0

我想分割一個包含正常文本的字符串以及html代碼到字符串數組中。我試圖搜索谷歌,但沒有找到任何合適的建議。單獨的html編碼字符串和普通字符串

考慮以下字符串:

blahblahblahblahblahblahblahblahblahblah
blahblah首先對blahblahblahblah
blahblahblahblahblahblahblahblahblahblah

<html> 
    <body> 
    <p>hello</p> 
    </body> 
</html> 

blahblahblahblahblahblahblahblahblahblah
blahblah二帕拉lahblahblahblahblah
blahblahblahblahblahblahblahblahblahblah

變爲:

s[0]=whole first para 
s[1]=html code 
s[2]=whole second para 

是否有可能通過jsoup?或者我需要其他API?

+2

你能不能簡單地搜索和標籤? – Floris

+0

我的字符串並不總是包含html標籤字符串也可以只包含body標籤或任何其他html標籤 –

+0

有沒有像你的例子一樣有一個字符串結構的好理由? – KarelG

回答

0

這是可能的jQuery。下面是一段代碼片段。

var str = "blablabla <html><body><p>hello</p></body></html> blabla"; 

var parsedHTML = $.parseHTML(str); 
myList = []; 

// loop through parsed text and put it into text based on its type 
$.each(parsedHTML, function(i, el) { 
    if (el.nodeType < 3) myList[i] = el.nodeName; 
    else myList[i] = el.data; 
}); 
// use myList ... 

這是一個小提琴,它向你展示它的工作原理。唯一的缺點是<html><body>標記被解析,而不是在解析的HTML中獲取。

jsfiddle example

+0

KarelG感謝您的答案,但jQuery的不起作用的java swing。 –

0

這可以用JSoup

簡單的使用例子來完成:

String html = "<html><head><title>First parse</title></head>" 
+ "<body><p>Parsed HTML into a doc.</p></body></html>"; 
Document doc = Jsoup.parse(html); 

然後你就可以瀏覽DOM結構中提取信息。

更新

要獲得所有標籤的文字,你可以包裝在<meta> ... </meta>標籤的整個字符串;然後解析它,訪問各個組件,最後將組件串行化回字符串。

或者如果你相信代碼都已經形成(與匹配開始和結束標記),你可以搜索正則表達式

/<(html|body)\s*>/ 

的第一場比賽根據什麼第一標記的內容(匹配)你是否會查找匹配關閉標記的最後一次出現。

更多手冊,更容易出錯,不推薦。但既然你有一個非標準的問題,你似乎可能需要一個非標準的解決方案。

+0

你的代碼只是從該字符串中刪除所有的html標籤。但我想要帶有標籤的字符串。 –