我只想获得以下链接字符串的实际链接:
String link = <a href="http://www.facebook.com/wwwausedu" target="_blank" class="btnFacebook">Link to Facebook</a>
结果应该只有www.facebook.com/wwwausedu
我尝试了以下操作,但它无法正常工作:
TEMP = link.substring(link.indexOf("http://")+1, tmp.lastIndexOf("\""));
答案 0 :(得分:5)
您不需要"
的最后一个索引,但第一个索引 后的http://
:
TEMP = link.substring(link.indexOf("http://")+7, link.indexOf("\"", link.indexOf("http://")));
String.indexOf(String str, int fromIndex)
函数在指定的索引之后首次出现str
。此外,正如@mellamokb the Wise所指出的,您需要将7
添加到索引中,而不是1
,因为您要从结果中排除http://
。
答案 1 :(得分:3)
为什么不使用专门为解析HTML而设计的工具,如jsoup。
String link = "<a href=\"http://www.facebook.com/wwwausedu\" "
+ "target=\"_blank\" class=\"btnFacebook\">Link to Facebook</a>";
Document doc = Jsoup.parse(link);
String address = new URL(doc.select("a").attr("href")).toString();
这将返回:http://www.facebook.com/wwwausedu
但我们只想要没有协议的部分,所以我们现在使用URL
URL url=new URL(address);
System.out.println(url.getHost()+url.getPath());
输出:
www.facebook.com/wwwausedu
答案 2 :(得分:2)
尝试使用Regex
Pattern p = Pattern.compile("href=\"(.*?)\"");
Matcher m = p.matcher(link);
String url = null;
if (m.find()) {
url = m.group(1); // this will give you the URL
}
修改强>: 要删除 http ,请使用正则表达式“href = \”http://(。*?)\“”