Regex - Recherche d'une URL d'image dans un String
pyo656
Messages postés34Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention19 février 2010
-
7 janv. 2010 à 14:12
pyo656
Messages postés34Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention19 février 2010
-
7 janv. 2010 à 16:19
Bonjour à tous !
Je suis entrain d'essayer de faire une méthode qui ressort toutes les urls d'image d'un code HTML.
J'ai, pour l'instant, utilisé les méthodes indexOf et substring de l'objet String pour rechercher. Voici mon code :
public static ArrayList recupUrls(String ligne)
{
// Contiendra toutes les urls du String
ArrayList reponse = new ArrayList();
int taille = ligne.length();
int i = 0;
while(i < taille)
{
int a = ligne.indexOf("http://",i);
int b=0;
if (a > 0 && a+7 < taille) // si a=-1 : pas trouve. Donc a doit être > 0
{
b = ligne.indexOf(".jpg",a+7);
if(b > 0 && b+4 < taille)
{
// On prend ce qu'il y a entre a et b + .jpg
String url = ligne.substring(a,b) + ".jpg";
// On ajoute a l'arraylist
reponse.add(url);
i = a + url.length(); // on debutera la prochaine recherche a la fin de la derniere
// a est le debut de l'url et on y ajoute la taille de url pour arriver la fin
}
else
i = taille +1;
}
else
i = taille+1;
}
return reponse;
}
J'ai pensé à vérifier chaque caractère qui suit le 'http://' qui a été trouvé. Puis sitôt qu'on tombe sur un espace ' ', un apostrophe ', un guillemet ou un crochet >, on vérifie les 4 caractères précédents et si c'est '.jpg' on fait un substring du début du Http jusqu'à l'indice du g de '.jpg'. Mais cette solution me parait plutôt lourde et laide :D
Merci d'avance pour votre aide !
Pyo
A voir également:
Regex - Recherche d'une URL d'image dans un String
pyo656
Messages postés34Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention19 février 2010 7 janv. 2010 à 16:19
Merci de ta réponse Sébastien.
Après avoir posté mon message, j'ai codé une seconde méthode de vérification, de façon récursive. Je me base sur l'hypothèse que le string passé en paramètre commence par http:// et se termine par l'url correcte de mon jpg.
private static String secondeVerification(String base)
{
String reponse = "";
int a = base.indexOf("http://",0);
int b;
if(a < 0) reponse = "erreur";
else
{
b = base.indexOf("http://",a+7);
if(b < 0) // il n'y a pas de deuxieme http
reponse = base.substring(a,base.length()); // On prend le string a partir du 1er http trouve jusqu'a la fin
else // il y a un 2ieme http donc on va rappeler la methode en enlevant le 1er http
reponse = secondeVerification(base.substring(a+7,base.length())); // le substring enleve les 7premiers caractere et prend tt le reste
}
return reponse;
}
C'est certes beaucoup moins joli qu'un petit regex mais je n'ai encore jamais utilisé cette classe en Java (j'y ai touché un peu en Php). Au moins ça marche le temps que je me documente sur les regex en Java et que je puisse tester ce que tu me proposes :)