Remplacer \ par \\

gabule Messages postés 50 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 24 avril 2008 - 24 mai 2006 à 16:00
cs_mml Messages postés 4 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 18 avril 2009 - 30 mai 2006 à 21:59
Bonjour,
jai une chaine dans laquelle je veux remplacer les \ par des \\
Quelle est l'astuce : moi je fais ca et ca marche pas :

Code :

//dir_tmp est mon chemin String ins_dir_temp = dir_tmp.replaceAll("\", "\\\"); System.out.println(ins_dir_temp);

6 réponses

cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
24 mai 2006 à 16:37
c'est quoi ton erreur ? un problème lors de la compilation ou lors de l'exécution ?

***  Kakol ***
0
Bel0 Messages postés 71 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 14 septembre 2007
24 mai 2006 à 16:40
Un petit tour dans l'api java pour la classe String:

str.replaceAll(String regex, String repl)
-> Pattern.compile(regex).matcher(str).replaceAll(repl)

Java utilise donc des regex pour faire le changement (assez lourd au passage). Or il faut savoir que \ est un caractère spécial dans les regexs. Il va donc falloir ne rajouter quelques-uns pour arriver à faire ce qu'on veut.

\\ -> \\\\
en regex pur: le premier slash dit qu'on le caractère suivant est un caractère spécial qu'on veut considérer comme normal ("escape the char"). Puisque, on veut remplacer par \\, il faut indiquer ajouter 2 \ supplémentaires pour escaper les backslash.

\\\\ -> \\\\\\\\
en java: pour chaque backslash dans le pattern et dans la chaine remplacée, il faut de nouveau les "escaper" mais cette fois-ci par rapport au langage java.

Au final, voilà ce qui fonctionne chez moi:
String path = "c:\\silly\\little\\path";
System.out.println(path.replaceAll("\\\", "\\\\\\\"));

Belo
0
Bel0 Messages postés 71 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 14 septembre 2007
24 mai 2006 à 16:41
pfff grilled pour 40sec :)
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
24 mai 2006 à 21:50
peut etre mais tu as etait le plus precis ;)

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mml Messages postés 4 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 18 avril 2009
30 mai 2006 à 21:59
pour la construction d'un chemin (unité disque\répertoire(s)\nom de fichier) il est toujours préférable d'utiliser le file.separator qui vous est automatique donné par Java, en fonction du système d'exploitation comme indiqué ci-dessous.
Soit vous avez déjà le chemin, vous connaissez le séparateur \ ou / et vous faites un .replaceAll avec le file.separator, soit vous construisez votre chemin, en mettant comme séparateur entre les répertoires et le nom de fichier, le file.separator.

// récupération du séparateur et mise dans une variable - utile pour une utilisation multiple :
String separator = System.getProperty("file.separator");

// utilisation (ici ont indique le chemin d'une image qui se trouve dans le dossier "images", lequel dossier est un sous- dossier du répertoire de l'application) :
String namePicture = "test.jpg";
String cheminImage = System.getProperty("user.dir") +  separator + "images" + separator + namePicture;

mml
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
24 mai 2006 à 16:40
replaceAll("\\\", "\\\\\\\")
-1
Rejoignez-nous