Remplacer \ par \\

Signaler
Messages postés
50
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
4
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
18 avril 2009
-
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

Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

c'est quoi ton erreur ? un problème lors de la compilation ou lors de l'exécution ?

***  Kakol ***
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
9
replaceAll("\\\", "\\\\\\\")
Messages postés
71
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2007

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
Messages postés
71
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2007

pfff grilled pour 40sec :)
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
12
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"
Messages postés
4
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
18 avril 2009

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