Remplacement de caractères

Résolu
cs_le_totophe Messages postés 51 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 mai 2007 - 10 avril 2007 à 16:37
cs_le_totophe Messages postés 51 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 mai 2007 - 10 avril 2007 à 17:36
Bonjour à tous,

j'ai besoin d'un petit coup de pouce:
j'ai la fonction suivante:

public static String remplacer(String str, String ancien, String nouveau)
{
    return str.replaceAll(ancien, nouveau);
}

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".

Merci d'avance pour vos réponses éclairées.

3 réponses

Fifan Messages postés 26 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 10 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.
3
Anthed Messages postés 152 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 17 janvier 2014 3
10 avril 2007 à 16:47
Hello.

Essaie plutôt : str.replace(ancien, nouveau);

Tchô.
0
cs_le_totophe Messages postés 51 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 mai 2007 2
10 avril 2007 à 17:36
Salut et merci,

effectivement, celà fonctionne...

Merci encore
0
Rejoignez-nous