cs_le_totophe
Messages postés51Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention26 mai 2007
-
10 avril 2007 à 16:37
cs_le_totophe
Messages postés51Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention26 mai 2007
-
10 avril 2007 à 17:36
Bonjour à tous,
j'ai besoin d'un petit coup de pouce:
j'ai la fonction suivante:
Cette fonction est utilisée pour permettre à Derby de faire des recherches sur des numéros de téléphone pouvant être saisis sous des mises en formes différentes mais qui dans tous les cas n'acceptent que des chiffres, des espaces ou des points.
Le problème est que quand j'essaye (même directement depuis un JTextField) de faire remplacer un point, la fonction par en cacahuète.
Concrètement, lorsque j'appelle cette fonction avec les valeurs suivantes:
str: "06.12.34.56.78"
ancien: "."
nouveau: "A" ou "" ou n'importe quoi
Je dervais obtenir par exemple avec "A" la chaine "06A12A34A56A78" et pourtant ce que j'obtiens c'est "AAAAAAAAAAAAAA".
Fifan
Messages postés26Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention10 mai 2007 10 avril 2007 à 17:31
Ton Pb avec replaceAll vient du fait que le 1er argument est une expression régulière.
Et le caractère "." (point) est un caractère spécial qui veut dire "n'importe quel caractère".
Aussi, il remplace tous les caratères par ton nouveau "A".
Si tu veux utiliser replaceAll avec le caractère ".", il te faut le déspécialiser en le faisant précéder d'un "".
Or, "" est lui aussi un caractère spécial qu'il te faut déspécialiser.
Au final, il te faut str.replaceAll("\\.","A");
La solution donnée par Anthed te donne le résultat que tu attend car la méthode replace remplace un caractère ou une séquence de caractères et non pas une expression régulière comme replaceAll.