La méthode replace () en java

Résolu/Fermé
hnajib Messages postés 41 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 21 mars 2014 - Modifié par hnajib le 18/09/2012 à 11:57
hnajib Messages postés 41 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 21 mars 2014 - 18 sept. 2012 à 15:28
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.
A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
18 sept. 2012 à 14:25
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
hnajib Messages postés 41 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 21 mars 2014 3
18 sept. 2012 à 14:35
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
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 18/09/2012 à 14:47
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
hnajib Messages postés 41 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 21 mars 2014 3
18 sept. 2012 à 14:58
La bibliothèque c'est joda-time-1.6.2
mais j'ai pas accée au source je sais pas comment savoir.
0
hnajib Messages postés 41 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 21 mars 2014 3
18 sept. 2012 à 14:58
En cherchant sur internet, je vois que DateTime c'est une constructeur de la classe DateTime.class
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 18/09/2012 à 15:05
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
hnajib Messages postés 41 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 21 mars 2014 3
18 sept. 2012 à 15:28
Merci beaucoup, le problème est résolu.
0