Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
973 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Replace en masse

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Replace en masse

n°2433290
jeromax
Posté le 24-11-2022 à 15:20:24  profilanswer
 

Yo
J'ai:
String listeParametre="Pierrot|vache|rouge";
String resultat="Bonjour $, la $ est $";

 
Comment faire pour avoir :
resultat="Bonjour Pierrot, la vache est rouge"
 
En gros, j'ai x éléments séparés par un pipe dans listeParametre que je dois mettre dans l'ordre à la place des $ dans resultat
Il faut que cela fonctionne bien sûr avec des $ en début et fin de chaine. Le nombre de $ n'est pas connu. Par contre je suis sûr d'avoir exactement le même nombre de $ que de paramètres.
J'ai fait un truc avec des split et des boucles mais j'ai l'intuition qu'il y a un truc beaucoup plus simple [:transparency]

mood
Publicité
Posté le 24-11-2022 à 15:20:24  profilanswer
 

n°2433397
TotalRecal​l
Posté le 25-11-2022 à 12:44:31  profilanswer
 

Bonjour,  
Si tu veux qu'on t'aide tu dois commencer par poster ce que toi tu as fait et pas juste l'énoncé (cf les règles de la section). Surtout que là ça sent énormément le devoir scolaire.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2433406
jeromax
Posté le 25-11-2022 à 14:32:53  profilanswer
 

Je suis arrivé sur le forum en 2004 et je bossais depuis quelques années déjà, je n'ai plus fait de devoirs scolaires depuis plusieurs années maintenant :-)
J'ai simplifié le cas à l’extrême pour ne laisser que l'idée sur laquelle je me pose des questions mais l'algo est plus complexe. J'ai également modifié les données pour que cela soit le plus simple possible (en réalité ce sont notamment des articles de lois).
Je me dis qu'il y a peut être une autre solution que de spliter puis de recoller, en utilisant des regex peut-être ...?

n°2433426
mechkurt
Posté le 25-11-2022 à 15:50:11  profilanswer
 

Le split | pour ton entrée de valeur à remplacer, pas sur qu'on puisse faire mieux...
Par contre il doit y avoir une fonction qui prend des tableaux pour les remplacements, mais désolé je ne connais pas Java ! ^^
https://www.google.com/search?q=jav [...] lace+array
Un truc du genre : http://www.java2s.com/example/java [...] 22fee.html ?


---------------
D3
n°2433430
DDT
Few understand
Posté le 25-11-2022 à 16:23:54  profilanswer
 

Une implémentation naïve semble bien fonctionner, je vois pas trop comment ça pourrait être beaucoup plus simple.

Code :
  1. var params = "Pierrot|vache|rouge".split("\\|" );
  2. var template = "Bonjour $, la $ est $".split("\\$" );
  3. assert(params.length == template.length);
  4. var out = new StringBuilder();
  5. for (int i = 0; i < params.length; i++) {
  6.     out.append(template[i]);
  7.     out.append(params[i]);
  8. }
  9. return out.toString();
 

Si tu veux une solution plus robuste, il manque pas de bibliothèques qui font de l'interpolation ou du templating de chaînes dans le monde Java.


Message édité par DDT le 25-11-2022 à 16:29:25

---------------
click clack clunka thunk
n°2433435
jeromax
Posté le 25-11-2022 à 17:19:45  profilanswer
 

Merci , je vais probablement utiliser le public static String replaceAll(String src, String[] replace, String[] by)
 :jap:

n°2433440
TotalRecal​l
Posté le 25-11-2022 à 17:58:26  profilanswer
 

Tu vas devoir générer un tableau de $ de la même taille que ton nombre de substitution, et à chaque itération le machin va recréer une chaîne pour rien.  
Je ne sais pas comment sont gérées en mémoire les mutations de chaînes en java, mais la solution de DDT me parait plus propre...


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Replace en masse

 

Sujets relatifs
std::regex_replaceInstabilité d'un système masse-ressort à 2 noeuds avec RK45
[Résolu PHP]aide pour passer de preg_replace à preg_replace_callbackEnvoi d'emails en masse
Macro Replace entre 2 fichiers excelsystème référentiel / masse vitesse et position relative.
[Python] Replace string tuple[PHP] Remplacer preg_replace par preg_replace_callback
[VBS] Find & replace avec une chaine contetant des guillemetsProbleme preg_replace_callback
Plus de sujets relatifs à : Replace en masse


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR