IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modifier une chaîne de caractères


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    A mon compte
    Inscrit en
    Avril 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Avril 2023
    Messages : 8
    Par défaut Modifier une chaîne de caractères
    Bonjour à tous!

    Je suis un petit nouveau qui cherche à s'instruire sur JAVASCRIPT et je planche actuellement sur un exercice que je n'arrive pas à résoudre de la façon souhaitée par le livre. J'aimerais vraiment y arriver comme demandé par l'énoncé pour comprendre la logique et la structure de ce langage.

    Il faut transformer la chaîne de caractères "javascript, c'est genial" en "j4v4scr1pt, c'3st g3ni4l". Autrement dit:

    a = 4
    e = 3
    i = 1

    Les impératifs fixés par l'énoncé sont :

    1. Déclarer une variable d'entrée var entree = "javascript, c'est genial";

    2. Déclarer une variable de sortie var sortie = "";

    3. Remplacer "a" par "4", "e" par "3" et "i" par "1"

    4. Employer l'opérateur += pour ajouter une nouvelle lettre à la fin de la chaîne de sortie


    J'ai réussi l'exercice en traitant la variable var sortie =""; qui est une variable de type string en variable de type array var sortie = [];

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    let entre = "javascript, c'est genial";
    let sortie = [];
     
    for (var i = 0; i < entre.length; i++) {
     
    	if (entre[i] == "a") {
    		sortie[i] = "4";
    	} else if (entre[i] == "e") {
    		sortie[i] = "3";
    	} else if (entre[i] == "i") {
    		sortie[i] = "1";
    	} else if (entre[i] == "o") {
    		sortie[i] = "O";
    	} else
    		sortie[i] = entre[i];
    }
    sortie = sortie.join("");
    console.log(sortie);
    Même si cette solution fonctionne (j'ai vérifié dans la console) pouvez-vous s'il vous plaît m'aider à y arriver de la manière demandée par le livre pour que je puisse comprendre la logique du javascript utilisé? Meeeerci énooormément à celle ou celui qui pourra (et voudra bien) m'aider

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par L'élépaon Voir le message
    Même si cette solution fonctionne (j'ai vérifié dans la console) pouvez-vous s'il vous plaît m'aider à y arriver de la manière demandée par le livre pour que je puisse comprendre la logique du javascript utilisé? Meeeerci énooormément à celle ou celui qui pourra (et voudra bien) m'aider
    On avait vu le principe dans l'autre fil (ajout d'une lettre à une chaine (vide au départ) à chaque tour de boucle)...

    En reprenant ton code cela donnerait par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    let entre = "javascript, c'est genial";
    let sortie = "";
     
    for (var i = 0; i < entre.length; i++) {
     
        if (entre[i] == "a") {
            sortie += "4";
        } else if (entre[i] == "e") {
            sortie += "3";
        } else if (entre[i] == "i") {
            sortie += "1";
        } else if (entre[i] == "o") {
            sortie += "O";
        } else
            sortie += entre[i];
    }
     
    console.log(sortie);
    Il y a d'autres manières de faire...


    EDIT :

    Citation Envoyé par L'élépaon Voir le message
    3. Remplacer "a" par "4", "e" par "3" et "i" par "1"
    Ah je n'avais pas fait attention à cela...

    J'ai repris ton code dans ma réponse mais dans ton code tu ajoutes un remplacement : "o" par "O" ...

    Il faut donc enlever ce remplacement du code si on veut respecter ce point 3...

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Il y a d'autres manières de faire...
    Par exemple avec une boucle for of :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    let entre = "javascript, c'est genial";
    let sortie = "";
     
    for (let lettre of entre) {
     
    	if (lettre == "a") {
    		sortie += "4";
    	} else if (lettre == "e") {
    		sortie += "3";
    	} else if (lettre == "i") {
    		sortie += "1";
    	} else
    		sortie += lettre;
    }
     
    console.log(sortie);

    On pourrait aussi utiliser un switch à la place des if else...

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut
    Citation Envoyé par Beginner
    Il y a d'autres manières de faire...
    entre autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for (var i = 0; i < entre.length; i++) {
     
    switch(entre[i]) {
                case "a":sortie += "4";break;
                case "e":sortie += "3";break;
                case "i":sortie += "1";break;
                default:sortie += entre[i];
            }
     
    }
    console.log(sortie);
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Citation Envoyé par ProgElecT Voir le message
    entre autres
    Oui effectivement, j'avais mentionné l'usage du switch sans donner le code...

    Cela tombe bien que tu ais posté un exemple de code avec switch...

  6. #6
    Membre habitué
    Homme Profil pro
    A mon compte
    Inscrit en
    Avril 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : A mon compte

    Informations forums :
    Inscription : Avril 2023
    Messages : 8
    Par défaut
    Merci beaucoup à vous deux Beginner et ProgElect !

    Ce que je constate tout d'abord c'est qu'il y a plusieurs manières d'écrire la même chose en javascript d'où mon envie de comprendre la syntaxe, les propriétés et la manière de les déclarer.

    Merci pour ta réponse Beginner!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (entre[i] == "a") {
            sortie += "4";
        } else if (entre[i] == "e") {
            sortie += "3";
        } else if (entre[i] == "i") {
            sortie += "1";
    Elle m'a appris que l'opérateur += remplace les lettres "a", "e" et "i" dans la variable var sortie au lieu de les ajouter comme je le pensais.
    Je croyais qu'avec une telle formulation on obtiendrait "ja4va4scri1pt c'e3st ge3nia4l" or on obtient bien "j4v4scr1pt c'3st g3ni4l"


    Merci à toi ProgElect!

    Tu m'as appris une nouvelle façon de réussir l'exercice


    Je ne sais pas si j'ai le "droit" de poster aussi souvent (2 post en 2 jours) mais je vous remercie tous les deux pour votre aide! Ce forum m'a déjà beaucoup aidé alors que je n'y suis que depuis deux jours. Merci encore une fois!

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par L'élépaon Voir le message

    Elle m'a appris que l'opérateur += remplace les lettres "a", "e" et "i" dans la variable var sortie au lieu de les ajouter comme je le pensais.
    Je croyais qu'avec une telle formulation on obtiendrait "ja4va4scri1pt c'e3st ge3nia4l" or on obtient bien "j4v4scr1pt c'3st g3ni4l"
    Ce que tu pensais est juste, dans le code l'opérateur += ajoute bien une lettre (à chaque tour de boucle) à la chaine sortie (qui est vide au départ). C'est le même principe qu'on avait vu dans l'autre fil (ajout d'une lettre à une chaine (vide au départ) à chaque tour de boucle)...

    N'hésite pas à ajouter des console.log pour voir le fonctionnement du code, par exemple pour suivre l'évolution de la chaine sortie à chaque tour de boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    let entre = "javascript, c'est genial";
    let sortie = "";
     
    for (var i = 0; i < entre.length; i++) {
     
        if (entre[i] == "a") {
            sortie += "4";
        } else if (entre[i] == "e") {
            sortie += "3";
        } else if (entre[i] == "i") {
            sortie += "1";
        } else {
            sortie += entre[i];
        }
        console.log(i, sortie);
    }
     
    console.log(sortie);
    Cela donne :

    Nom : chaine.PNG
Affichages : 193
Taille : 10,8 Ko

    On voit bien qu'on ajoute une lettre à chaque tour de boucle... Maintenant ce qui donne l'impression qu'on a fait des remplacements c'est que la lettre qu'on ajoute n'est pas toujours une lettre de la chaine entre...

    On peut comprendre comme cela :

    - si entre[i] n'est pas un des caractères suivants : "a", "e" ou "i" alors on ajoute le caractère entre[i] à la chaine sortie.

    - si entre[i] est le caractère "a" alors on ajoute le caractère "4" à la chaine sortie.

    - si entre[i] est le caractère "e" alors on ajoute le caractère "3" à la chaine sortie.

    - si entre[i] est le caractère "i" alors on ajoute le caractère "1" à la chaine sortie.

    Ainsi on voit bien qu'à chaque fois on ajoute un caractère à la chaine sortie.

  8. #8
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Citation Envoyé par L'élépaon Voir le message
    ....
    Je ne sais pas si j'ai le "droit" de poster aussi souvent (2 post en 2 jours)
    ...
    Il n'y a pas de limite de postage, par contre une discussion par question, dés que le sujet du titre change (surtout ne pas changer le titre ), il faut en créer une nouvelle, mais pas continuer dans la même.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Et puis quand tu auras saisi les gammes de JS, tu verras que c'est vraiment un langage souple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const rg={"a":4,"e":3,"i":1}
    console.log("javascript, c'est genial".replace(/[aei]/g,c => c in rg ? rg[c] : c))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Modifier une chaîne de caractères
    Par scoubi77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2018, 23h35
  2. [Débutant] Modifier une chaîne de caractère dans une boucle pour un fichier ascii
    Par Altolino dans le forum MATLAB
    Réponses: 5
    Dernier message: 20/04/2018, 10h30
  3. Réponses: 1
    Dernier message: 28/06/2017, 09h36
  4. [Python 3.X] Script modifiant une chaîne de caractères dans plusieurs fichiers.
    Par Julien698 dans le forum Général Python
    Réponses: 4
    Dernier message: 09/09/2014, 13h41
  5. modifier une chaîne de caractères dans une fonction void
    Par jujudelyon dans le forum Débuter
    Réponses: 10
    Dernier message: 11/01/2014, 18h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo