我有
String s = "<a href="https://stackoverflow.com">https://stackoverflow.com</a><br/><a href="https://google.com">https://google.com</a>"
现在我只想替换href
属性中的所有链接,前缀为固定值(例如`abc.com?')。这是我想要的结果:
String s = "<a href="abc.com?url=https://stackoverflow.com">https://stackoverflow.com</a><br/><a href="abc.com?url=https://google.com">https://google.com</a>"
我尝试了以下操作,但它没有解决问题,因为它取代了以http://
属性开头的所有字符串:1}}属性:
href
我只能在属性中替换,而不是在其他内容中替换?
答案 0 :(得分:0)
您可以使用HTML解析器,例如JSoup
String s = "<a href="https://stackoverflow.com">https://stackoverflow.com</a>";
Document document = JSoup.parse(s);
Elements anchors = document.getElementsByTag("a");
anchors.get(0).attr("href", "...new href...");
或者,如果重量太大,正则表达式就足够了:
<a href="(?<url>[^"]+)">(?<text>[^<]+)<\/a>
请注意,如果您不关心text
群组,请将?<text>
替换为?:
只需替换url
&amp; text
小组使用与this answer
答案 1 :(得分:0)
正如RealSkeptic所说,寻找href而不是链接本身,它可以节省很多精力。
var s = '<a href="http://stackoverflow.com">https://stackoverflow.com</a><br/><a href="https://google.com">https://google.com</a>';
s = s.replace(/href="/g,"href=\"abc.com&url=" );
console.log(s);