3

次のリンク文字列の実際のリンクのみを取得したいと思います。

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

3 に答える 3

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ではなく、インデックスに追加する必要があります。1http://

于 2013-03-07T03:09:51.920 に答える
3

jsoupのような HTML を解析するために特別に設計されたツールを使用しないでください。

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
于 2013-03-07T03:22:58.943 に答える
2

正規表現を使ってみる

    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://(.*?)\""を使用します

于 2013-03-07T03:12:03.950 に答える