Получить определенный текст в большем тексте - PullRequest
1 голос
/ 18 июля 2011

Я хочу получить текст, начинающийся с "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 изображения. И сохраните его в некоторых переменных.

Ответы [ 4 ]

2 голосов
/ 18 июля 2011

Вы можете использовать регулярные выражения здесь:

Pattern p = Pattern.compile("http\\://.+?\\.jpg");
Matcher m = p.matcher(content);
while (m.find())
{
     System.out.println(content.substring(m.start(), m.end()));
}
1 голос
/ 18 июля 2011

Попробуйте это:

    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());
0 голосов
/ 18 июля 2011

Я бы так подумал, если бы делал это без использования каких-либо утилит он занимает 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
0 голосов
/ 18 июля 2011

Нет необходимости искать по подстроке ..

public void captureURL(String content){

        if(content.startsWith("http://") && content.endsWith(".jpg")){

        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...