将html字符串分为两部分:<img/>标记之前和之后

时间:2012-10-29 12:20:01

标签: java

我有一些可以有标签的html字符串,如下所示:

<p> blablabla <img> an image</img> again blablabla</p>

我想删除图像标记,并在字符串数组中前后获取该部分。

修改 致电后

String[] splitted = htmlStr.split("regex");

结果将是:

splitted[0] = "<p> blablabla ";
splitted[1] = "again blablabla</p>"

我想说正则表达式是必需的,请注意img标签可以在不同的字符串之间:例如,它可以有一个或多个属性。

4 个答案:

答案 0 :(得分:0)

对包含许多IMG标记的复杂HTML使用StringTokenizer,String.split()或HTML解析器。

答案 1 :(得分:0)

您应该使用HTML Parser来解析HTMLs,因为您的代码可能会有所不同,Regex无法完全处理。

但是,鉴于此情况,您只想删除<img>标记,无论其具有何种属性,都可以使用以下正则表达式: -

String str = "<p> blablabla <img> an image</img> again <img href = sadf> " + 
             "asdf asdf </img>blablabla</p>";

str = str.replaceAll("<img\\s*[^>]*?>[^<]*?</img>", "");
System.out.println(str);

输出: -

<p> blablabla  again blablabla</p>

您希望看到以下链接: -

您可以使用HTML解析器,例如: -

答案 2 :(得分:0)

请尝试以下代码:

String str = "<p> blablabla <img> an image</img> again blablabla</p>";
int start = str.indexOf("<img");
int end = str.indexOf("</img>");
String imgTagValue = str.substring(0,start) + str.substring(end, str.length());

但是,如果在单行中使用了超过<img>个标记,则应该对其进行适当的解析。

参考here

答案 3 :(得分:0)

如果要删除所有html标签,可以使用以下代码:

string = string.replaceAll("\\<.*?\\>", "");