我想将包含普通文本和html代码的单个字符串拆分为字符串数组。我试图在谷歌上搜索但没有找到任何合适的建议。
考虑以下字符串:
blahblahblahblahblahblahblahblahblahblah
blahblah第一段blahblahblahblah
blahblahblahblahblahblahblahblahblahblah
blahblahblahblahblahblahblahblahblahblah<html> <body> <p>hello</p> </body> </html>
blahblah Second Para lahblahblahblahblah
blahblahblahblahblahblahblahblahblahblah
这变为:
s[0]=whole first para
s[1]=html code
s[2]=whole second para
是否可以通过jsoup
?或者我需要任何其他api?
答案 0 :(得分: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中获取。
答案 1 :(得分: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*>/
根据第一个标记(匹配)的内容,您可以查找匹配关闭标记的最后一个匹配项。
更多手动,更容易出错,不推荐。但是,由于您有非标准问题,您似乎可能需要非标准解决方案。