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 :

Substr : objet string et chaîne primitive


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut Substr : objet string et chaîne primitive
    Bonjour,

    C'est une question de débutant.
    J'ai un bout de code tout simple qui manipule un mot extrait de split, une variable contenant la 1ère lettre, et une autre, le reste du mot. Je ne suis pas encore bien au clair au sujet de l'objet String et des chaînes primitives, mais j'ai l'impression que la fonction substr ne fonctionne que sur une chaîne primitive.
    Problème : split me renvoie un tableau d'objets.

    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var texte = $(".chapo p").text();
    var mot = texte.split(/(\W)/,1);
    var lettrine = mot.substr(0,1);                 // ne marche pas
    var reste = mot.substr(1);                      // ne marche pas
    var reste = mot.valueOf().substr(1);         // ne marche pas non plus
    J'ai bien tenté valueOf(), sans succès, un typeOf pour vérifier m'indique que 'lettrine' et 'reste' sont toujours des objets, même avec valuOf. Ces variables sont donc inexploitables. Merci de vos lumières !

  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
    Salut,

    Je pense que tu n'as pas besoin de la fonction split(), on peut le faire juste avec la fonction substr(), tu peux tester ici : http://jsbin.com/cesonozunu/edit?js,console

  3. #3
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 392
    Par défaut
    Bonsoir,

    Vous avez écrit :
    ...j'ai l'impression que la fonction substr ne fonctionne que sur une chaîne...
    C'est une bonne impression.
    ...Problème : split me renvoie un tableau...
    C'est plutôt une solution qu'un problème. Si mot est un tableau, alors il faut écrire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var lettrine = mot[0].substr(0,1);
    var reste = mot[1].substr(1);

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    Re,

    Merci eleydet. Ici, Split me renvoie un tableau d'objets, et même avec le 2e argument (qui en principe ne renvoie qu'une réponse avec 1...). J'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reste = mot[1].substr(1);
    mais je retombe sur le souci du début : "reste" est un objet, et ValueOf() ne me donne pas accès à la chaîne. Il y a sans doute un détail qui m'échappe avec cette méthode.... si quelqu'un voit ce qui cloche, par curiosité, je suis preneur....

    Ceci dit, Beginner, tu as raison, je me suis compliqué la vie en passant par l'étape mot. Du coup, ça marche très bien sans passer par là, et on reste en String. J'opte pour ça !

    Merci !

  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
    Oui cette fonction te renvoi un tableau de chaine mais en ajoutant l’argument "1" : var mot = texte.split(/(\W)/,1); tu limites la taille de ce tableau à 1 (il ne contiendra donc qu'un seul élément...) donc mot[1] est indéfini et seul mot[0] est défini...

    Avec cette fonction j'ai l’impression que tu crois diviser le texte en deux avec la première partie contenant la première lettre et la seconde partie contenant le reste des lettres mais ce n'est le pas cas...

    Même sans ajouter l'argument qui limite la taille du tableau cette fonction ne fera pas cela... Fait des tests tu verras...

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

Discussions similaires

  1. [javascript] objet string + comparaison
    Par herve70 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2006, 16h19
  2. [POO] Objet string et copie
    Par Gruik dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/11/2006, 17h34
  3. Réponses: 2
    Dernier message: 06/05/2006, 19h52
  4. [POO] du texte a partir d'un objet String
    Par jejam dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/01/2006, 15h08
  5. Comment tester qu'un objet String est bien initialisé
    Par Jones dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 17/09/2004, 11h29

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