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 une chaine de caractères en majuscule


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut Récupérer une chaine de caractères en majuscule
    Bonjour,

    Voila ma problématique
    j'ai une base de donnée mysql et j'y importe un fichier csv d'une autre application, dans le fichier csv, il y a :
    • un champ Nom&Prénom d'un usager, et les données sont de ce type : "DUPONT Marcel" "MARTIN DUPUIS Roberte", etc....

    • un champ Nom d'un usager, et les données sont de ce type : "DUPONT" "MARTIN DUP", etc.... (le champ nom est codé sur 10 caractère dans le fichier csv donc des fois il y a des lettres qui manquent comme pour "MARTIN DUPUIS" on trouve seulement "MARTIN DUP"



    je voudrais faire une petite boucle de traitement sql, et redispatcher dans ma base mysql (qui fait la distinction NOM et PRENOM comme deux champs distincts)

    si quelqu'un pouvait m'aider à elaborer la petite routine qui me faciliterait la vie, ou me donner 1 piste...

    ***EDIT:
    en gros j'aimerais à l'intérieur de ma boucle pouvoir récuperer deux variable, l'une contenant le nom en majuscule "DUPONT" ou "MARTIN DUPUIS", et l'autre variable contenant le reste du champ (le prenom)

    l'export de l'autre application est toujours identique, le nom est toujours en majuscule, et peut etre séparé par des espaces
    ***

    Merci d'avance

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    J'ai pas pigé ce que tu as en entrée ? Pour ce que tu veux en sortie c'est bon par contre.

    PS : Marrant ton pseudo
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    En entrée,
    j'ai des informations de ce style:

    1. Nom&Prenom---------------------------Nom

    • DUPONT Marcel-------------------------Marcel

    • MARTIN DUPUIS Roberte-----------------MARTIN DUP (10 lettres Max)

    • ANDREBASTOSSILVA--------------------ANDREBASTO


    En gros: le champ nom&prenom est codé sur 30carac et Nom sur 10carac.
    Et il faut extraire le nom seul et aprés prénom.
    J'espère que j'étais un peu plus clair.
    Merci pour votre aide

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    j'ai pensé à faire une extraction par rapport aux lettres en majuscule en utilisant les expressions régulières:
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pattern p = Pattern .compile("[A-Z]");
    String entree = "DUPONT Marcel";
    Matcher m = p.matcher(entree);
    while (m.find())
        System.out.println(entree.substring(m.start(), m.end()));
    mais le problème c'est que la première lettre du prénom est en majuscule aussi

  5. #5
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Et je suppose aussi que tu peux avoir des exemples de ce genre ?
    - Entrée : DUPONT Charles Henri
    - Sortie :
    * Nom = DUPONT
    * Prénom = Charles Henri
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    tout à fait )))

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Bah en faisant un peu comme ce que tu as fais pour les majuscules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Pattern p = Pattern .compile("[a-z]");
    String entree = "DUPONT Marcel";
    Matcher m = p.matcher(entree);
    int emplacementPremiereMinuscule = m.start();
     
    string nom = entree.substring(0, emplacementPremiereMinuscule - 2);
    string prenom = entree.substring(emplacementPremiereMinuscule - 1, entree.length());
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Merci beaucoup pour la réponse !!!
    Mais pour récupérer la première lettre en minuscule de la variable prénom , la ligne : int emplacementPremiereMinuscule = m.start();
    retourne l'erreur suivante: Exception in thread "main" java.lang.IllegalStateException: No match available
    at java.util.regex.Matcher.start(Unknown Source)

    Y' a pas un autre moyen pour récupérer cet index qui pointe sur la première minuscule ?.?

  9. #9
    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 bo_goss Voir le message
    En entrée,
    j'ai des informations de ce style:

    1. Nom&Prenom---------------------------Nom

    • DUPONT Marcel-------------------------Marcel

    • MARTIN DUPUIS Roberte-----------------MARTIN DUP (10 lettres Max)

    • ANDREBASTOSSILVA--------------------ANDREBASTO


    En gros: le champ nom&prenom est codé sur 30carac et Nom sur 10carac.
    Et il faut extraire le nom seul et aprés prénom.
    J'espère que j'étais un peu plus clair.
    Merci pour votre aide
    Pour respecter cette citation (même si c'est en gros) le code deviendrait:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    String nom = "";
             String pre = "";
     
             String nP = "MARTIN DUPUIS Marie Roberte1234567890";
     
             int rang = 0;
             for(rang = 0; rang < nP.length(); rang++)
             {
                char car = nP.charAt(rang);
                if(Character.isLowerCase(car))
                {
                   System.out.println("rang = " + rang);
                   nom = nP.substring(0, rang -2);
     
                   // Si le champ nom&prenom est codé sur 30carac et Nom sur 10carac.
                   // le nom aura une longueur maxi de 10 et le prénom de 20.
     
                   if(nom.length() >10)
                      nom = nom.substring(0, 10);
                   pre = nP.substring(rang -1);
                   if(pre.length() >20)
                      pre = pre.substring(0, 20);
                   break;
                }
             }
     
             System.out.println("Le nom : " + "\"" + nom + "\"");
             System.out.println("Le prénom : " + "\"" + pre + "\"");

Discussions similaires

  1. [RegEx] Récupérer une chaine de caractéres par strpos
    Par bdptaki dans le forum Langage
    Réponses: 11
    Dernier message: 21/04/2009, 11h43
  2. Répérer une chaine de caractère en Majuscules
    Par rvaysse dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 10/06/2008, 13h39
  3. Réponses: 5
    Dernier message: 22/06/2006, 17h19
  4. Réponses: 6
    Dernier message: 14/06/2006, 15h27
  5. Récupérer une chaine de caractère dans une page
    Par BrunS dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2005, 14h28

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