TP1 Question 3

Programmation Avancée

Modérateur : douinj

boukah_n
Messages : 3
Inscription : 26 sept. 2019 15:38

TP1 Question 3

Message par boukah_n » 26 sept. 2019 17:00

Bonjour,

J'ai un échec à cette question :
"There was 1 failure: 1) test_nom_avec_quote_et_accent(question3): expected:<...''...> but was:<..._...>"

J'ai pourtant ajouté une méthode dans la classe test pour vérifier que les quotes, doubles quotes et accent soient bien remplacé par un underscore mais j'ai toujours cet échec à la soumission.

Voici la méthode test qui fonctionne correctement :

Code : Tout sélectionner

public void test_nom_avec_accent_et_quote() {
        question3.AuditeurCNAM auditeur1 = new question3.AuditeurCNAM("Chlo'é",
                "chloé", "12345");
        assertEquals("Mme Chloé chloé ", "Chlo_é", auditeur1.nom());
        assertEquals("Mme Chloé chloé ", "chloé", auditeur1.prenom());
        assertEquals(" nom avec accent (é devient e) ? ", "chlo_e_c", auditeur1.login());
}
Voici la méthode dans la classe pour remplacer les caractères que j'appelle lors du login() :

Code : Tout sélectionner

private String cleanName(String input){
     return input == null ? null :
            Normalizer.normalize(input, Normalizer.Form.NFD)
                    .replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
                    .replaceAll(" ", "_")
                    .replaceAll("-", "_")
                    .replaceAll("''", "_")
                    .replaceAll("'", "_");
}
Si quelqu'un aurait une idée.
Merci

sadouk_h
Messages : 7
Inscription : 26 sept. 2019 23:54

Re: TP1 Question 3

Message par sadouk_h » 26 sept. 2019 23:58

un petit indice vers le bonne réponse sera de remplacer ce qui est pas un alphabet (a-z) par "_". bon courage

boukah_n
Messages : 3
Inscription : 26 sept. 2019 15:38

Re: TP1 Question 3

Message par boukah_n » 27 sept. 2019 11:24

Merci pour ton aide mais même avec un .replaceAll("[^a-zA-Z]", "_") ou .replaceAll("[^\\p{IsAlphabetic}]", "_") toujours la même erreur.
Je connais pas trop JAVA mais dans les autres langages c'est censé remplacé tout ce qui n'est pas lettre par underscore là pour le coup je vois vraiment pas où est l'erreur, tant pis :)

sadouk_h
Messages : 7
Inscription : 26 sept. 2019 23:54

Re: TP1 Question 3

Message par sadouk_h » 27 sept. 2019 15:41

Ajoute ça après le substring():
.toLowerCase()).replaceAll("[^a-z]","_");
On a besoin du résultat en minuscule alors il faut faire la conversion avant la méthode replaceALL() question d'avoir un regex moins compliqué. et tqt je suis totalement nouveau au java aussi c'est juste un question du temps et d'habitude .

zeghlo_s
Messages : 5
Inscription : 04 oct. 2019 11:31

Re: TP1 Question 3

Message par zeghlo_s » 04 oct. 2019 11:32

Bonjour,

je me demandais comment vous faisiez pour importer Normalizer ? Parce que quand je le mets dans le code pour supprimer les accents, BlueJ m'affiche une erreur.

Merci

sadouk_h
Messages : 7
Inscription : 26 sept. 2019 23:54

Re: TP1 Question 3

Message par sadouk_h » 08 oct. 2019 1:16

zeghlo_s a écrit :
04 oct. 2019 11:32
Bonjour,

je me demandais comment vous faisiez pour importer Normalizer ? Parce que quand je le mets dans le code pour supprimer les accents, BlueJ m'affiche une erreur.

Merci
j’espère que je suis pas en retard je viens juste de voir ton message , mais pour importer Normalizer ajoute cette ligne après la ligne du package en haut: import java.text.Normalizer; et c'est tout , et je suis désolé de ne pas avoir répondu un peu plus tôt .

zeghlo_s
Messages : 5
Inscription : 04 oct. 2019 11:31

Re: TP1 Question 3

Message par zeghlo_s » 12 oct. 2019 10:58

Il y a pas de souci. J'ai trouvé comment faire.
En tout cas, ça sera utile pour de futurs TP ; si il est permis d'importer des bibliothèques.
Merci en tout cas ;)

Répondre