これは私がやっている場合と思うだろう方法ですユーティリティー機能を一切使用しません。
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
出典
2011-07-18 17:41:20
Sam
が、やることは一度だけループするので、それはO(n)のランタイムを取りますあなたは最初の試合だけを取る方法を知っていますか? – Tsunaze
'if'に変更する –