2014-01-17 75 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标签。但我想要带有标签的字符串。 –