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

Java Discussion :

Cherche astuce pour récuperer un caractere qui est lui meme un caractere de séparation


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 71
    Points : 44
    Points
    44
    Par défaut Cherche astuce pour récuperer un caractere qui est lui meme un caractere de séparation
    Bonjour à tous, alors voilà je ne sais pas du tout comment faire je viens vous expliquer mon probleme.

    Donc j'ai une ligne avec des caractère qui sont chacun séparé par une virgule.
    ex : a,b,c,d
    Et grace à un split je découpe cette chaine à la virgule
    J'obtient un tableau avec les valeurs a b c d
    Maintenant dans ma ligne j'insere le caractere virgule donc j'ai
    a,b,c,d,,
    et je voudrais récuperer dans un tableau les valeurs a b c d ,
    Mais je ne vois pas comment faire sans changer le caractere de séparation

    Si quelqu'un connait une astuce ?

    merci d'avance

  2. #2
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    tu peux chercher le cas ',,'
    Mais je pense que changer de séparateur serait plus propre

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 71
    Points : 44
    Points
    44
    Par défaut
    Ok, bah pour l'instant j'ai pris un nouveau séparateur ||, mais si jamais y a d'autre solution je suis preneur

    Si non j'ai un autre petit probleme, j'ai un fichier avec sa dedans

    Origine 1;Origine 2;doit obtenir
    "dossier
    pédagogique";"dossier
    pédagogique";dossier pédagogique
    "dossier
    pédagogique";"dossier
    pédagogique";dossier pédagogique
    "dossier
    pédagogique";"dossier
    pédagogique";dossier pédagogique
    "dossier
    pédagogique";"dossier
    pédagogique";dossier pédagogique
    Je veux séparer par les ; sauf quand j'ai un ; entre des " "

    Par exemple "bonjour ; aurevoir" ; "hier ; demain"
    Je veux avoir apres "bonjour ; aurevoir"
    et "hier ; demain"

    Comment proceder ?

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 620
    Points : 15 697
    Points
    15 697
    Par défaut
    Pour ton premier problème:
    - tes valeurs font elle toujours un seul caractère?
    - est-ce que pour les valeur "a", "b", "," et "*" tu aurais a,b,c,,,*?

    Si tel est le cas, tu peux utiliser l'expression régulière ((?<!,),)|(,(?!,)) dans ta méthode split. Ça peux paraitre barbare si tu ne connais pas les expressions régulières, mais ça indique que tu coupes, soit sur les virgules qui ne sont pas précédées d'une virgule, soit sur les virgules qui ne sont pas suivies d'une autre virgule.

    Pour ton second problème, tu sembles vouloir lire du CSV, il y a des bibliothèques faites pour ça que je te conseilles d'utiliser. Il y a d'ailleurs un autre cas particulier a ce format : le doublement du guillemets s'il est dans un champ déjà entre guillemet.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 71
    Points : 44
    Points
    44
    Par défaut
    Salut, alors pour répondre

    - tes valeurs font elle toujours un seul caractère?
    Oui normalement, mais l'utilisateur peut être amener aussi à vouloir mettre des mots
    est-ce que pour les valeur "a", "b", "," et "*" tu aurais a,b,c,,,*?
    Oui en effet sa marche et sa me vire les ""

    Je vais essayer tes methodes, et je vais essayer de regarder les bibli, merci de ton aide !

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 71
    Points : 44
    Points
    44
    Par défaut
    Re c'est moi je voulais savoir pour l'expression réguliere si je m'y prenais bien car j'arrive pas à la faire marcher, en gros je fais

    Pattern p=Pattern.compile(((?<!,),)|(,(?!,)));
    j'ai essayé aussi
    Pattern p=Pattern.compile("((?<!,),)|(,(?!,))");

    et apres

    chaine1=p.split(chaine2);

    sa a pas l'air de marcher : /

    merci

  7. #7
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 620
    Points : 15 697
    Points
    15 697
    Par défaut
    Bizarre, j'ai fait un test rapide. Le code suivant marche très bien chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            String text = "a,b,c,d,,,*";
            Pattern p=Pattern.compile("((?<!,),)|(,(?!,))");        
            for (String valeur : p.split(text)){
                System.out.println(valeur);
            }
    Le problème doit être ailleurs.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 71
    Points : 44
    Points
    44
    Par défaut
    Ok, merci je vais regarder un peu plus mon code alors.
    Ah enfaite sa marche sauf quand elle est en premiere ou derniere position (la ,)

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2011, 20h40
  2. Réponses: 3
    Dernier message: 02/06/2010, 07h48
  3. [PHP 5.3] array dans un objet qui est lui meme dans un tableau d'objet
    Par mfej74 dans le forum Langage
    Réponses: 4
    Dernier message: 11/12/2009, 11h56
  4. Réponses: 6
    Dernier message: 14/08/2006, 10h50

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