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

avec Java Discussion :

Récupérer le prénom après le 1er espace ou le 2ème


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut Récupérer le prénom après le 1er espace ou le 2ème
    Bonjour,

    Je récupère mes cellules via un fichier excel sous cette forme:
    [nom]espace[prénom] (ex: traoré amadou)
    et
    [nom]espace[nom]espace[prénom] (ex: le duc marcel)

    Je souhaite juste récupérer le prénom.
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prenom_recup = prenom_agent.substring(prenom_agent.indexOf(" "));
    Ca marche pas.

    Quelqu'un a-t-il une idée ?
    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    Comme son nom l'indique, prenom_agent.indexOf(" ") va te retourner un entier représentant la position où (" ") a été rencontré. Donc c'est logique que ça ne rentre pas dans un String.

    Tu devrais plutôt utiliser String.split(String)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Le duc Marcel".split(" ");
    te renvoie le tableau
    {"Le";"duc";"Marcel"}

    Donc je pense qu'il te faut un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prenom_agent.split(" ")[2]

  3. #3
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    Je fais ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    prenom_agent=row.getCell(1).getStringCellValue();//on récupère le nom+prénom de l'agent
    					prenom_recup = prenom_agent.split(" ");
    					System.out.println("prenom_recup"+prenom_recup);
    et m'affiche ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    prenom_recup[Ljava.lang.String;@1724a9d
    prenom_recup[Ljava.lang.String;@80cac9
    prenom_recup[Ljava.lang.String;@18166e5
    prenom_recup[Ljava.lang.String;@8a548b
    prenom_recup[Ljava.lang.String;@1b4a74b
    prenom_recup[Ljava.lang.String;@15356d5
    prenom_recup[Ljava.lang.String;@69d02b
    prenom_recup[Ljava.lang.String;@e1eea8
    prenom_recup[Ljava.lang.String;@fb6354
    prenom_recup[Ljava.lang.String;@364641
    prenom_recup[Ljava.lang.String;@13e754f
    prenom_recup[Ljava.lang.String;@187c55c
    prenom_recup[Ljava.lang.String;@ae3364
    Je suppose que je mit suit mal pris avec le split() c'est sur!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    String.split renvoie un String[]

    donc en gros, il te fait des System.out.println(String[]);

    Dans ce tableau, ce qui t'intéresse, c'est le 3ème élément (donc index 2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    prenom_recup = prenom_agent.split(" ")[2];

  5. #5
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    Quand je fais cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(cell2 != null){
    					//System.out.println(cell2.getRowIndex() + ":"+ cell2.getColumnIndex() + " - " + cell2 + " : "+ cell2.getCellType());
    					//prendre que les prénom
    					prenom_agent=row.getCell(1).getStringCellValue();//on récupère le nom+prénom de l'agent
    					prenom_recup = prenom_agent.split(" ")[2];
    					System.out.println("prenom_recup"+prenom_recup);
     
    					}
    J'ai cette erreur-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    	at Extraction2.main(Extraction2.java:149)
    la ligne 149 est:
    prenom_recup = prenom_agent.split(" ")[2];
    c'est un dépassement de tableau je suppose il doit pas trouvé les valeurs.
    donc j'ai fait:
    prenom_recup = prenom_agent.split(" ")[0];

    et la j'ai rien donc mon String prenom_recup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    prenom_recup 
    prenom_recup 
    prenom_recup 
    prenom_recup 
    prenom_recup 
    prenom_recup

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 101
    Par défaut
    L'ArrayList est juste là pour faire un exemple général, le code qui t'intéresse est en rouge.

    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
    ArrayList<String> cell=new ArrayList<String>();
    cell.add("Lagaffe Gaston");
    cell.add("Van Dercken Jean");
    
    for(int i=0;i<cell.size();i++)
    {
    	String[] mots=cell.get(i).split(" ");
    	String prenom;
    	if(mots.length==2)
    	{
    		prenom=mots[1];
    	}
    	else
    	{
    		prenom=mots[2];
    	}
    	System.out.println(prenom);
    }
    Si tu veux inclure dans ton code, ça donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    prenom_agent=row.getCell(1).getStringCellValue();//on récupère le nom+prénom de l'agent
    String[] mots=prenom_agent.split(" ");
    if(mots.length==2)
    {
    	prenom_recup=mots[1];
    }
    else
    {
    	prenom_recup=mots[2];
    }
    System.out.println("prenom_recup"+prenom_recup);

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Citation Envoyé par liouan Voir le message
    Comme son nom l'indique, prenom_agent.indexOf(" ") va te retourner un entier représentant la position où (" ") a été rencontré. Donc c'est logique que ça ne rentre pas dans un String.

    Tu devrais plutôt utiliser String.split(String)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Le duc Marcel".split(" ");
    te renvoie le tableau
    {"Le";"duc";"Marcel"}

    Donc je pense qu'il te faut un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prenom_agent.split(" ")[2]
    La position de (" ") obtenue est justement ce dont a besoin substring, mais dans le cas présent de 2 espaces, ce n'est pas le premier espace qui fait qu'on obtient " duc Marcel" mais l'adresse +1 du dernier espace obtenu avec lastIndexOf(" ") +1 (+1 pour éviter d'obtenir " Marcel" aulieu de "Marcel") et ce sera bon même s'il n'y a qu'un seul espace comme par exemple avec "Leduc Marcel" le dernier espace étant le premier. Voir (revoir) le fonctionnement de substring...

    Cordialement,

    Dan

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    Bonjour,

    Je récupère mes cellules via un fichier excel sous cette forme:
    [nom]espace[prénom] (ex: traoré amadou)
    et
    [nom]espace[nom]espace[prénom] (ex: le duc marcel)

    Je souhaite juste récupérer le prénom.
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prenom_recup = prenom_agent.substring(prenom_agent.indexOf(" "));
    Ca marche pas.

    Quelqu'un a-t-il une idée ?
    Merci
    Ton premier post était pourtant tout près de ce qu'il fallait faire.

    ci-dessous ce qu'il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prenom_recup = prenom_agent.substring(prenom_agent.lasIndexOf(" ") +1);
    Mais attention, on ne peut pas détecter une éventuelle absence d'espaces en testant si index est à -1 , il faudrait pour le détecter, "dégrouper" indexOf et substring.
    On ne contrôle pas non plus la présence indésirable d'espace(s) au mauvais endroit.

  9. #9
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    Bonjour,

    Je récupère mes cellules via un fichier excel sous cette forme:
    [nom]espace[prénom] (ex: traoré amadou)
    et
    [nom]espace[nom]espace[prénom] (ex: le duc marcel)

    Je souhaite juste récupérer le prénom.
    sans vouloir rentrer dans les détails techniques la spécification elle-même est un gros problème (s'il s'agit d'une application réelle).
    Je dis ça parce que j'ai un prénom composé sans tiret au milieu et je souffre constamment de toutes les erreurs que provoquent ce genre de pratique ... et encore j'ai pas à me plaindre : pour ma fille l'espace se trouve dans le prénom ET dans le nom de famille!

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

Discussions similaires

  1. Récupérer ses données après formatage
    Par Sékiltoyai dans le forum Composants
    Réponses: 7
    Dernier message: 21/04/2007, 18h01
  2. [vb/C#] Récupérer un id apres insertion
    Par blast078 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 13/04/2006, 21h59
  3. Récupérer sortie standard après redirection vers un fichier.
    Par sozie9372 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/03/2006, 15h10
  4. Réponses: 8
    Dernier message: 25/01/2006, 12h06
  5. Récupérer le numéroAuto après CurrentDb.Execute strSQL
    Par Tchupacabra dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2006, 16h50

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