在未知索引处搜索某些字符之间的子字符串

时间:2012-12-27 03:02:43

标签: java android regex string replace

我有一个字符串,如:

<div class="photo-box biz-photo-box pb-60s">
    <a href="/biz/the-kerry-piper-willowbrook">
        <img class="photo-img" alt="" height="60" src="http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg" width="60">
    </a>

如何检索网址

http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg 

来自这个String?

我想过 string.indexOf()但是url之前和之后的字符数可能会有所不同,因此我不知道这个子字符串在哪个索引处开始,这可能会很混乱。有什么最好的方法吗?

2 个答案:

答案 0 :(得分:4)

使用Jsoup URL 文件字符串中抓取/解析HTML并使用其jQuery 喜欢选择器语法。

String htmlStr="<div class=\"photo-box biz-photo-box pb-60s\">"
                      + "<a href=\"/biz/the-kerry-piper-willowbrook\">"
                      + "<img class=\"photo-img\" alt=\"\" height=\"60\" src=\"http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg\" width=\"60\">"
                      + "</a>";

org.jsoup.nodes.Document doc=org.jsoup.Jsoup.parse(htmlStr);
String src=doc.select("img").attr("src");
System.out.println(src);

答案 1 :(得分:2)

如果您不想使用HTML解析器,则可以构造正则表达式并使用regex package来匹配您需要的唯一数据。

类似的东西,

Pattern pattern = Pattern.compile("<img.*?src=\"([^\"]+)\"",Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(data);
while(m.find()) {
    srcUrl = m.group(1));
}