我想检索以“http”开头的文字,并在我拥有的内容中以“.jpg”结束。 我现在所做的是:
public void captureURL(String content){
for(int i = 0; i < content.length() ; i++){
String test = content.substring(i);
if(test.startsWith("http://") && test.endsWith(".jpg")){
}
}
}
总体情况是:我使用Asynctask获取页面内容,并搜索图像URL。并将其保存在一些变量中。
答案 0 :(得分:2)
您可以在此处使用正则表达式:
Pattern p = Pattern.compile("http\\://.+?\\.jpg");
Matcher m = p.matcher(content);
while (m.find())
{
System.out.println(content.substring(m.start(), m.end()));
}
答案 1 :(得分:1)
试试这个:
String html = "http://image1.jpg sometext http://image2.jpg";
Pattern p = Pattern.compile("http.*?jpg");
Matcher m = p.matcher(html);
while (m.find())
System.out.println(m.group());
答案 2 :(得分:0)
无需按子串搜索..
public void captureURL(String content){
if(content.startsWith("http://") && content.endsWith(".jpg")){
}
}
答案 3 :(得分:0)
如果不使用任何实用程序功能,我会这么想。它需要O(n)运行时,因为它只循环一次:
public static ArrayList<String> captureURL(String content) {
ArrayList<String> urls = new ArrayList<String>();
boolean currentlyInURL = false;
String url = "";
for (int i = 0; i + 4 <= content.length(); i++) {
if (content.substring(i, i + 4).equals("http")) {
url += content.substring(i, i + 1);
currentlyInURL = true;
} else if (content.substring(i, i + 4).equals(".jpg") && currentlyInURL) {
url += content.substring(i, i + 4);
urls.add(url);
url = "";
currentlyInURL = false;
} else if (currentlyInURL && i != content.length() - 1) {
url += content.substring(i, i + 1);
}
}
return urls;
}
以及以下测试:
public static void main(String[] args) {
String content = "blah blah http://dfdfsdf.jpgcool cool http://ssfk.jpgddddd";
for (String url : captureURL(content)) {
System.out.println(url);
}
}
在控制台中输出以下内容:
http://dfdfsdf.jpg
http://ssfk.jpg