我有一些可以有标签的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标签可以在不同的字符串之间:例如,它可以有一个或多个属性。
答案 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("\\<.*?\\>", "");