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

  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)
    0
    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
      0
      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()
        0
      2. La bibliothèque c'est joda-time-1.6.2
        mais j'ai pas accée au source je sais pas comment savoir.
        0
      3. En cherchant sur internet, je vois que DateTime c'est une constructeur de la classe DateTime.class
        0
      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());
        0
      5. Merci beaucoup, le problème est résolu.
        0