Methode ReplaceAll

Fermé
morphine63 Messages postés 12 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 2 février 2013 - 28 déc. 2012 à 17:10
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 28 déc. 2012 à 18:43
Bonjour,

J'ai un fichier source message et je souhaite remplacer tout les mots IEP du fichier source par une chaîne de caractère. Mais lors de l'enregistrement du nouveau fichier rien n'est remplacé je ne sais pas quoi faire

// lecture du message modèle

String message = FileUtils.readFileToString(new File("C:\\Users\\Ju\\Desktop\\Modeles\\acte_ccam_modele.xml"));

// modification du message modèle


message.replaceAll("%iep%","voityure");


// écriture du fichier message

FileUtils.writeStringToFile(new File("C:\\Dev\\docs\\messages_emis\\000001.ihe"), message);


Merci d'avance





2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 déc. 2012 à 17:26
La méthode replaceAll ne modifie pas l'objet String qui est appelé, mais elle retourne un nouveau String modifié qu'il faut donc récupérer :

// modification du message modèle
message = message.replaceAll("%iep%","voityure");
0
morphine63 Messages postés 12 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 2 février 2013
28 déc. 2012 à 17:56
Merci beaucoup mais le problème est le meme je pense qu'il doit y avoir un soucis le fichier rendu est le meme que celui d'origine

voici les lignes que je souhaite changer

<identifiant>
<emetteur>
<valeur>IEP</valeur>
</emetteur>
<recepteur>
<valeur>IEP</valeur>
</recepteur>
</identifiant>
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 déc. 2012 à 18:12
Les expressions régulières sont sensibles à la casse !

Si tu as "IEP" tu dois filtrer "IEP" pas "iep", de plus je ne sais pas à quoi servent tes "%"

message = message.replaceAll("IEP","voityure");
0
morphine63 Messages postés 12 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 2 février 2013
28 déc. 2012 à 18:33
Merci cela marche !
J'ai maintenant un deuxieme soucis plus embêtent ^^
je veux remplacer : String alteredMessage = message.replaceAll("IEP", acte.getIEP());

mais mon getIEP renvois un objet de type IEP et non string.
Y a t'il une solution comme créer un variable qui puisse etre de type string contenant la valeur de IEP ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 déc. 2012 à 18:43
Tout dépend ce qu'est c'est classe IEP et de ce que tu veux représenter dans ton String, mais de manière générale tout les objets ont une méthode toString()

String alteredMessage = message.replaceAll("IEP", acte.getIEP().toString());

Remarque : au travers de tes String, tu es amené à construire et manipuler le contenu entier de ton fichier ce qui est à mon avis lourdeur aussi bien au niveau du temps d'exécution qu'au niveau de l'espace mémoire utilisé, en comparaison d'une méthode qui remplirait le deuxième fichier au fur et à mesure qu'il lit le premier...
0