2011-07-18 9 views
1

"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を検索します。それをいくつかの変数に保存します。

答えて

2

あなたはここに正規表現を使用することができます。

Pattern p = Pattern.compile("http\\://.+?\\.jpg"); 
Matcher m = p.matcher(content); 
while (m.find()) 
{ 
    System.out.println(content.substring(m.start(), m.end())); 
} 
+0

が、やることは一度だけループするので、それはO(n)のランタイムを取りますあなたは最初の試合だけを取る方法を知っていますか? – Tsunaze

+1

'if'に変更する –

0

部分文字列で検索する必要はありません。..

public void captureURL(String content){ 

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

     } 
} 
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()); 
+0

それはうまくいっていますが、最初の試合など、1つだけ表示するにはどうすればいいですか? – Tsunaze

0

これは私がやっている場合と思うだろう方法ですユーティリティー機能を一切使用しません。

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 
+1

これは、パターンとマッチャーなしで実行するための最良の方法です。知ってよかった、ありがとう。 – Tsunaze

関連する問題