• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Optimiser un .replace()

    Sans suite
    5
    5
    1089
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Ama
      Ama dernière édition par

      Bonjour à tous !

      Je viens vers vous pour savoir si vous auriez une meilleure méthode que la mienne pour parvenir à remplacer des mots par d’autres dans un fichiers en évitant ce gros paté:

      
          private String[][] templateWordsToReplace = new String[][] {
      {"#modid", "#name", "#description", "#version", "#credits", "#logoFile", "#mcversion", "#url", "#updateUrl", "#authors", "#screenshots", "#dependencies"}, {"modid", "name", "description", "version", "credits", "logoFile", "mcversion", "url", "updateUrl", "authors", "screenshots", "dependencies"}};
      
      bufferedWriter.write(getFileTemplateContent()
                          .replace(this.templateWordsToReplace[0][0], this.templateWordsToReplace[1][0])
                          .replace(this.templateWordsToReplace[0][1], this.templateWordsToReplace[1][1])
                          .replace(this.templateWordsToReplace[0][2], this.templateWordsToReplace[1][2])
                          .replace(this.templateWordsToReplace[0][3], this.templateWordsToReplace[1][3])
                          .replace(this.templateWordsToReplace[0][4], this.templateWordsToReplace[1][4])
                          .replace(this.templateWordsToReplace[0][5], this.templateWordsToReplace[1][5])
                          .replace(this.templateWordsToReplace[0][6], this.templateWordsToReplace[1][6])
                          .replace(this.templateWordsToReplace[0][7], this.templateWordsToReplace[1][7])
                          .replace(this.templateWordsToReplace[0][8], this.templateWordsToReplace[1][8])
                          .replace(this.templateWordsToReplace[0][9], this.templateWordsToReplace[1][9])
                          .replace(this.templateWordsToReplace[0][10], this.templateWordsToReplace[1][10])
                          .replace(this.templateWordsToReplace[0][11], this.templateWordsToReplace[1][11])
                                             );
      
      

      J’ai essayer une boucle for pour remplacer de manière plus simple les mots du tableau, mais ça me ganère à chaque fois le fichier en remplaçant 1 seul mot à la fois

      Si jamais quelqu’un à une solution, je suis prenneur !

      Oui ça n’est pas spécialement pour du forge, mais ça peux servir pour des moddeurs quand même si une solution est trouvée 🙂

      Si je t'ai filé un coup de main n'oublie pas le + / -
      Par contre évite les demandes d'aides en MP, tu sera sympa'

      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

      1 réponse Dernière réponse Répondre Citer 0
      • SCAREX
        SCAREX dernière édition par

        Si c’est pour remplacer du texte, pourquoi ne pas utiliser les expressions régulières ?

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 réponse Dernière réponse Répondre Citer 0
        • RedRelay
          RedRelay Moddeurs confirmés dernière édition par

          Je sais qu’il y a une différence entre replace() et replaceAll() mais qu’elle n’est pas du tout intuitive, les méthodes étant mal nommé.
          Peut-être chercher autour de ça, surtout pour ta culture général parce que dans la pratique, niveau optimisation c’est pas ça ^^

          Les regexp peuvent être plus efficace il me semble 😉

          Si tu veux quelque chose de plus propre et de plus maintenable, je peux te proposer ceci :

          Une classe “MotARemplacer” qui contient une fonction getPattern() qui retourne le motif que tu souhaites remplacer et une fonction getReplacement() qui te retourne la chaine de caractère en remplacement.
          Ensuite tu dispose d’une classe “B” qui va contenir une Map <string, motaremplacer=“”>et une methode pour ajouter un mot du style :

          register(MotARemplacer mot ) {
          map.put(mot.getPattern(), mot);
          }
          

          une methode pour supprimer un mot et une autre pour convertir une chaine avec les mots remplacé ;)</string,>

          –------------------------------------------------------------------------------------
          Si tu trouves mon intervention pertinente, n'hésite pas a m…

          1 réponse Dernière réponse Répondre Citer 0
          • fredoo91
            fredoo91 dernière édition par

            J’ai fais un test avec :

            
            String wordsToReplace = "#modid #name #description #version #credits #logoFile #mcversion #url #updateUrl #authors #screenshots #dependencies";
            
            wordsToReplace = wordsToReplace.replaceAll("#(.*?)", "$1");
            System.out.println("  test :"+wordsToReplace);
            

            Ce qui me donne : 
             test :modid name description version credits logoFile mcversion url updateUrl authors screenshots dependencies

            Donc  :

            
             bufferedWriter.write(getFileTemplateContent().replaceAll("#(.*?)", "$1"));
            
            

            devrait être ce que tu recherche .
            Edit : 
            Ou encore plus simple :

            
             bufferedWriter.write(getFileTemplateContent().replaceAll("#", ""));
            
            

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

              Le problème c’est qu’il veut remplacer #modid par quelque chose qui ne sera pas modid. (mais le modid d’un mod)
              Sinon en effet il aurait juste fallut retirer le #.

              1 réponse Dernière réponse Répondre Citer 0
              • 1 / 1
              • Premier message
                Dernier message
              Design by Woryk
              Contact / Mentions Légales

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB