-
replaceAll html point
Bonsoir tout le monde.
Alors, en esperant poster au bon endroit:
J'ai un probleme avec la fonction replaceAll de java.
En fait, je cherche a remplacer les liens relatifs d'une page web (je modifie le code HTML)... et ce que je voudrais faire c'est remplacer par exemple tout les "../" par "http://monadresse.com/".
MonString.replaceAll("../img","http://monadresse.com/img");
Ca marche mais ca remplace plus qu'il ne faut. En fait il me fait plus quelques chose comme remplacer tout les "??/img" c'est a dire qu'il remplace mon expression quelque soit les deux caracteres a la place des points :?
Ca m'arrange pas du tout, j'ai essayer pas mal de trucs mais sans resultat.
Alors si quelqu'un aurais une idée, je sui preneur car un peu desesperé.
;)
-
Si tu es sure ke tes 3 premiers caracteres sont "../" tu n'as qu'a les supprimer de ta chaine et ensuite la concaterner avec ton autre chaine.
Parce que le replace all marche avec les expressions regulieres et vu que le '.' signifie n'importe quel caractere il va automatiquement faire un replacement.
As tu essaye de faire replaAll("\.\./img","http://monadresse.com/img");
-
Voui, j'ai essayer:
replaAll("../img","http://monadresse.com/img");
replaAll("\.\./img","http://monadresse.com/img");
replaAll(" '.' '.'/img","http://monadresse.com/img");
replaAll("."+"."+"/img","http://monadresse.com/img");
replaAll("⋅"+"⋅"+"/img","http://monadresse.com/img");
Et surement encore quelques petites variante mais rien.
-
Bon ben comme je t'ai dis avant tu fais un substring(0,2) et ensuite un concat. C'est pas bo mais au moins ca va te debloquer en attendant de trouver mieux.
-
Salut,
Ce comportement est normal puisque dans les regexp le caractère '.' représente "n'importe quel caractère". Plus de détail : http://javasearch.developpez.com/j2s...x/Pattern.html
Pour éviter cela il faut le protéger par un \ (qui se double : FAQ : Pourquoi dois-je doubler/quadrupler le caractère anti-slash ('\') ?signal_si_nouveau(conv_date("22/08/2005"));signal_si_mise_a_jour(conv_date(""));) :
Code:
monString.replaceAll("\\.\\./img","http://monadresse.com/img");
Mais la meilleure solution serait d protéger toute la chaine :
FAQ : Comment empêcher les expressions régulières d'interpréter une sous-chaînes ?
Code:
monString.replaceAll("\\Q../img\\E","http://monadresse.com/img");
a++
-
Nan, ca ca me va pas, les trois caracteres sont pas forcement au debut de chaine.
C'est pas la fin du monde, je vais le coder moi meme mais il y a evidement une facon de faire pour remplacer les points avec "le replaceAll".
Si quelqu'un sait, ou si je trouve, je posterais des nouvelles.
Have fun ;-)
-
Eh bien adiGuba viens de te donner une solution je crois...reste plus qu'a essayer.
-
merci beaucoup adiGuba (et fumiste972 aussi d'ailleur)
;-)