Methode ReplaceAll

morphine63 Messages postés 18 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
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 19031 Statut Modérateur 3 020
 
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 18 Statut Membre
 
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 19031 Statut Modérateur 3 020
 
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 18 Statut Membre
 
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 19031 Statut Modérateur 3 020
 
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