Traitement des chaine de caracte en java

Fermé
julie00006 Messages postés 3 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 14 octobre 2011 - 14 oct. 2011 à 16:52
 Utilisateur anonyme - 16 oct. 2011 à 08:10
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
A voir également:

3 réponses

Utilisateur anonyme
14 oct. 2011 à 18:26
Salut,

Comment extraire le nom puis le prénom en utilisant substring:

Il faut commencer par extraire le prénom en recherchant l'ultime espace du champ nom prénom >> lastIndexOf(" ");


         String nom = "";
         String pre = "";
      
         String nP = "MARTIN DUP Roberte";
      
         int index = nP.lastIndexOf(" ");
         if(index > -1) // si = -1 >> la structure est incorrecte
         {
            pre = nP.substring(index +1);
            System.out.println("Prenom : " + "\"" + pre + "\"");
         
            nom = nP.substring(0, index);
            nom = nom.trim(); // pour supprimer l'espace final
            System.out.println("Nom : " + "\"" + nom + "\"");
         }


Cordialement,

Dan
1
julie00006 Messages postés 3 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 14 octobre 2011
Modifié par julie00006 le 15/10/2011 à 10:59
Merci Dan pour la réponse ;)
j'ai essayé d'adapté le code pour prendre en compte le cas ou le prénom est composé style : DUPONT Jean Pierre (Nom: DUPONT, Prénom: Jean Pierre).
Si je prend l'index sur le champ espace " " j'aurai comme retour:
Nom: DUPONT Jean
Prénom: Pierre

Est ce que vous pouvez m'aider???
0
Cas des prénoms composés avec contrôle de la longueur du nom à 10 maxi et celle du prénom à 20:

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 10 carac.
               // le nom aura une longueur maxi de 10 et le prénom de 20.
               // me le confirmer.

               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 + "\"");


Cordialement,

Dan
Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
0