Probleme de replaceAll() - Java - Programmation
Marsh Posté le 17-09-2002 à 15:33:45
parce que "\\" correspond à \
Marsh Posté le 17-09-2002 à 15:34:16
replaceAll prend des String en args?
Marsh Posté le 17-09-2002 à 17:04:27
Ben parce que les types "char" et "String" sont différents, tout simplement. Mais dans ton cas, cela suffit amplement à mon avis : 
Code :
  | 
 
 
Maintenant, si tu veux vraiment pouvoir remplacer des chaînes de caractères de plus de 1 caractère de long, voici ce qu'il faut utiliser : 
Code :
  | 
Marsh Posté le 18-09-2002 à 15:13:01
Tout d'abord, je voudrais vous remercier pour avoir pris le temps de me repondre. 
 
Bon, je ne vois pas pourquoi vous me parlez de char et de string : 
 
Voici les specifications de Sun : 
 
| Citation : replaceAll(String regex, String replacement)    | 
 
Donc ca devrait marcher, darklord tu dis que "\\" correspond à "\", c'est tout a fait mon intention, donc ma notation est juste. 
 
Il existe une autre fonction qui utilise le type char en parametre : 
 
| Citation : replace(char oldChar, char newChar)    | 
 
 
Donc, j'en avais deduis que : 
 
"test\\test".replaceAll("\\","/" )="test\\test".replace('\\','\'
 
 
Hors, lorsque j'utilise replaceAll, j'obtiens l'erreur ci-dessus.... 
Mon code est juste, je m'interroge seulement sur la provenance de cette erreur...   
Marsh Posté le 18-09-2002 à 17:44:29
ben oui mais le replaceAll il attend une expression régulière en premier argument, pas simplement une chaine de caratère à remplacer ...
Marsh Posté le 18-09-2002 à 17:48:59
Au temps pour moi, quand j'ai répondu, j'avais confondu replace() et replaceAll() (je n'ai pas encore l'habitude de toutes les nouveautés du JDK1.4).  
  
 
Il faudrait donc renommer ma fonction replaceAll() ci-dessus en replace() pour être cohérent. 
 
benou> D'après le JavaDoc, le premier paramètre de String.replaceAll() est de type String, mais c'est un pattern d'expression régulière. Ainsi que ce même JavaDoc l'indique : 
| Citation :    | 
Marsh Posté le 18-09-2002 à 17:53:21
J'ai peut-être une idée : essaie de spécifier "\\\\" plutôt que simplement "\\" comme expression régulière. 
 
Pourquoi ? Parce que le backslash doit être un caractère d'échappement pour Java et pour le moteur de traitement des regexps. Moralité, la chaîne Java "\\\\" est en fait une chaine de 2 caractères de longueur, composée de 2 caractères backslash. Cette chaine de caractères est ensuite interprétée par le moteur de traitement de regexp, qui va utiliser le premier backslash pour "escap-er" le caractère qui le suit.  
 
Suis-je clair ?  
 
Marsh Posté le 18-09-2002 à 17:56:20
| BifaceMcLeOD a écrit a écrit  : benou> D'après le JavaDoc, le premier paramètre de String.replaceAll() est de type String, mais c'est un pattern d'expression régulière. Ainsi que ce même JavaDoc l'indique : 
    | 
 
 
 ben c'est exactement ce que je viens de dire ... 
Marsh Posté le 18-09-2002 à 18:01:10
il a l'air fatigué Biface .... ![]()
Marsh Posté le 18-09-2002 à 18:03:09
| DarkLord a écrit a écrit  : il a l'air fatigué Biface ....  | 
 
Tu dis ça parce que j'ai loupé ton post "parce que "\\" correspond à \"" ?  
  
 
Ben......... ouais. Je l'avais loupé.  
  
   
Donc, si je comprends bien... faut que je m'rentre ! Allez coucouche, panier ! 
  ![]()
Marsh Posté le 18-09-2002 à 18:09:12
| BifaceMcLeOD a écrit a écrit  : Oui, mais "\\" est bien une expression régulière, non ?  | 
 
ha ... peut-être je sais pas ... j'y connais vraiment rien en regexp  
 
Marsh Posté le 18-09-2002 à 18:11:16
| BifaceMcLeOD a écrit a écrit  : Tu dis ça parce que j'ai loupé ton post "parce que "\\" correspond à \"" ? Ben......... ouais. Je l'avais loupé. Donc, si je comprends bien... faut que je m'rentre ! Allez coucouche, panier !  | 
 
 
mais non ![]()
Marsh Posté le 18-09-2002 à 18:19:52
Si, si !  
 (ça s'appelle avoir du chien et être fatigué... 
 )
Marsh Posté le 17-09-2002 à 15:30:28
Bonjour a tous,
J'ai un probleme avec la fonction replaceAll.
Je cherche a remplacer tout les "\" par des "/".
Voici donc mon programme :
Et hop :
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected in
ternal error near index 1
\
La solution serait dont de simplement utiliser "replace(char,char)".....mais pourquoi ca ne marche pas avec des strings (alors que j'ai bien mis "\\" !!)