链接字符串的子串

时间:2013-03-07 03:05:40

标签: java string

我只想获得以下链接字符串的实际链接:

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("\""));

3 个答案:

答案 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://(。*?)\“”