La méthode replace () en java

Résolu
hnajib Messages postés 56 Statut Membre -  
hnajib Messages postés 56 Statut Membre -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. hnajib Messages postés 56 Statut Membre 3
     
    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. KX Messages postés 19031 Statut Modérateur 3 020
       
      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. hnajib Messages postés 56 Statut Membre 3
       
      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. hnajib Messages postés 56 Statut Membre 3
       
      En cherchant sur internet, je vois que DateTime c'est une constructeur de la classe DateTime.class
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      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. hnajib Messages postés 56 Statut Membre 3
       
      Merci beaucoup, le problème est résolu.
      0