我要在所有锚标签内替换“href”的内容。 整个HTML主体在String对象中接收。
标签锚点有多次出现。我要在所有锚标签中替换“href”的值。
Parent.java {
...
String htmlBody;
}
示例:
htmlBody="
<HTML>
<head>...</head>
<body>
<table>
<tr><td>
<table>
<tr><td>
<a href="https://www.test.com/shop/s111/product/pro1"><img src="..."></a>
</td></tr>
<tr><td>
<a href="https://www.test.com/shop/os222/product/pro2"><img src="..."></a>
</td></tr>
</table>
...
</body>
</HTML>";
请注意锚标记内的每个href值略有不同。
我想知道在Java中实现这一目标的最佳方法。
答案 0 :(得分:0)
此解决方案不会检查输入HTML的有效性,并假设URL是双引号:
StringBuffer buf = new StringBuffer();
Pattern pattern = Pattern.compile("<a href=\"([^\"]*)\">");
Matcher matcher = pattern.matcher(htmlBody);
while (matcher.find()) {
String url = replaceUrl(matcher.group(1));
matcher.appendReplacement(buf, "<a href=\"" + url + "\">");
System.out.println(matcher.group(0));
}
matcher.appendTail(buf);
System.out.println(buf.toString());