0

私はこの文字列を持っています

<div><img width="100px" src="http://www.mysite.com/Content/dataImages/news/small/some-pic.png" /><br />This is some text that I need to get.</div>

This is some text that I need to get.Javaで上記の文字列から画像リンクとテキストを取得する必要があります。どうすればこれを行うことができるか教えてもらえますか?

4

4 に答える 4

1

私の解決策は次のとおりです。

String tmp=xpp.nextText();
desc=android.text.Html.fromHtml(tmp).toString();
img=FindUrls.extractUrls(tmp);

私が使用した文字列からテキストを抽出するために:

desc=android.text.Html.fromHtml(tmp).toString();
img=FindUrls.extractUrls(tmp);

文字列内のリンクには、この関数を使用しました。

 public static String extractUrls(String input) {

        String result = null;
        Pattern pattern = Pattern.compile(
            "\\b(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" + 
            "(\\w+:\\w+@)?(([-\\w]+\\.)+(com|org|net|gov" + 
            "|mil|biz|info|mobi|name|aero|jobs|museum" + 
            "|travel|[a-z]{2}))(:[\\d]{1,5})?" + 
            "(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?" + 
            "((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + 
            "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)" + 
            "(&(?:[-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + 
            "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*" + 
            "(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?\\b");

        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            result=matcher.group();
        }
        return result;
    }

同様の問題を抱えている人に役立つことを願っています

于 2013-03-01T08:56:58.033 に答える
1

正規表現を使用して、必要なものを取得します。

于 2013-03-01T06:39:11.880 に答える
1

これがすべての場合、追加のパッケージを取り込む意味はありません。正規表現を使用するだけです。パターン「(?<= src = \ ")(。*?)(?= \")」を使用して、リンク、あなたはあなたにテキストを与えるためにそれを変更することができます。

于 2013-03-01T07:09:31.507 に答える
1

これを試してみてください。必要に応じてパターンを変更してください。

String str = "<div><img width=\"100px\" src=\"http://www.mysite.com/Content/dataImages/news/small/some-pic.png\" /><br />This is some text that I need to get.</div>";
Pattern p = Pattern.compile("src=\"(.*?)\" /><br />(.*?)</div>");
Matcher m = p.matcher(str);
if (m.find()) {
    String link = m.group(1);
    String text = m.group(2);
}
于 2013-03-01T07:58:07.380 に答える