La méthode replace () en java

Résolu
Bonjour,

Mon code est le suivant :
addComponent(new Label("Semaine du {1} {2} au {3} {4}" 
            .replace("{1}", storeFirstDate.getDayOfMonth()) 
         .replace("{2}", DateTimeFormat.forPattern("MMMM").withLocale(Locale.FRANCE).print(storeFirstDate)) 
         .replace("{3}", "c") 
            .replace("{4}", DateTimeFormat.forPattern(" MMMM YYYY").withLocale(Locale.FRANCE).print(storeLastDate))));


Mon problème est au niveau du remplacement de {1} et {3} le replace() veut pas les prendre, et je ne sais pas pourquoi.

Merci pour votre aide.

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    On ne sait pas quels sont les données que tu manipules.
    Par exemple storeFirstDate, de quel type il est ? getDayOfMonth() n'existe pas dans les classes Date, Calendar, DateFormat, etc. alors d'où vient-il ? Quel est son type de retour ?

    Par contre, à moins d'un effet de bord, le "{3}" devrait passer, c'est {2} et {4} pour lesquels j'ai des doutes, parce que les méthodes print() sont généralement de type void, alors que replace attend un char ou un CharSequence (un String par exemple)
    1. Le code c'est ça, je me suis trompé :

      addComponent(new Label("Semaine du {1} {2} au {3} {4}"
              .replace("{1}", storeFirstDate.getDayOfMonth())
              .replace("{2}", DateTimeFormat.forPattern(" MMMM").withLocale(Locale.FRANCE).print(storeFirstDate))
          	.replace("{3}", storeLastDate.getDayOfMonth())
          	.replace("{4}", DateTimeFormat.forPattern(" MMMM YYYY").withLocale(Locale.FRANCE).print(storeLastDate))

      ** private DateTime storeFirstDate;
      ** private DateTime storeLastDate;
      ** getDayOfMonth = c'est une méthode de AbstractDateTime.class

      C'est le {1} et {3} qui marchent pas, mais pour {2} et {4} ya pas de problème.

      Merciiiiiii
      1. Modérateur
        DateTime et AbstractDateTime, ce ne sont pas des classes standards, tu dois donc utiliser une bibliothèque complémentaire, mais laquelle ?

        Ce qu'il est intéressant de connaitrec'est le type de retour de getDayOfMonth()
      2. La bibliothèque c'est joda-time-1.6.2
        mais j'ai pas accée au source je sais pas comment savoir.
      3. En cherchant sur internet, je vois que DateTime c'est une constructeur de la classe DateTime.class
      4. Modérateur
        getDayOfMonth renvoie un int (ce qui est logique après tout !)

        À voir : documentation et code source

        Il faut donc faire la conversion en String, sinon on pourrait confondre avec un char.

        String.valueOf(storeLastDate.getDayOfMonth());
      5. Merci beaucoup, le problème est résolu.