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

Langage Java Discussion :

Expression reguliere pour decoupage


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Expression reguliere pour decoupage
    Bonjour
    J'ai une chaine de caractères comme cela:
    {56,89,87,55}
    Et je voudrais recuperer la liste des entiers associés:
    56
    89
    87
    55
    Sachant que j'ai vraiment du mal avec les expressions regulieres , comment pourrais-je faire?



    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
     
    public static List split(String s) {
     
    		ArrayList results = new ArrayList();
    		Pattern p = Pattern.compile("QUE FAUT TIL METTRE ICI");
     
    		Matcher m = p.matcher(s);
     
     
    		while (m.find()) {
    			results.add(m.group());
    		}
     
    		results.trimToSize();
     
    		return results;
    	}

    Merci d'avance!!!

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu peux simplement utiliser split!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] chaine_decoupe="56,89,87,55".split(",");

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ouiais mais il faut aussi virer les accolades "{" "}"

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Et voila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern.compile("(\\d+)");

  5. #5
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Kalou75
    Ouiais mais il faut aussi virer les accolades "{" "}"
    Comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String chaine="{56,89,87,55}";
    String[] chaine_decoupe=chaine.substring(1,chaine.length-1).split(",");

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Points : 185
    Points
    185
    Par défaut
    Tu pouvais pour virer les accolades faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s=s.substring(1, s.length -1);
    Trop tard... ;P

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci ,Toutes vos solutions marchent à MERVEILLE!!!!!!!

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    En fait ca marche pas à tous les coups exemple pour la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern.compile("(\\d+)");

    Si je mets #45//89!90 ca me renvoie 45 89 89 or moi je voix avoir exactement ce format la {45,89,90} en entree.
    De meme que pour la solution


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] chaines=s.substring(1,s.length()-1).split(",");
    si je mets #45,95,45! ca me retoune 45 95 45 mais comme precedemment, je veux le format d'entrée suivant{nombre1,nombre2} et pas un autre
    Merci pour ce que vous avez fait

  9. #9
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Je comprends plus rien a ce que tu veux

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par Kalou75
    Si je mets #45//89!90 ca me renvoie 45 89 89 or moi je voix avoir exactement ce format la {45,89,90} en entree.
    De meme que pour la solution
    Il suffit de rajouter un test avant pour vérifier si la chaine d'entrée correspond au format voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public List<String> split(String s) throws IllegalArgmentException {
        List<String> list = null;
        if(s.matches("{\\d{2},\\d{2},\\d{2}")) {
            list = new ArrayList<String>();
            Matcher matcher = Pattern.compile("\\d+").matcher(s);
            while(matcher.find()) {
                list.add(matcher.group());
            }
        } else {
            throw new IllegalArgumentException("Bad format");
        }
        return list;
    }
    Remarque : pour valider le test, les nombres doivent nécessairements avoir 2 chiffres -> {1,10,2} n'est pas accepté -> {01,10,02} (pour modifier ce comportement cf Greedy quantifiers).

Discussions similaires

  1. [XSLT]Expression régulière pour filtrer le contenu d'un noeud
    Par Matthieu Brucher dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/10/2006, 15h35
  2. Expression reguliere pour avoir le contenu d'un lien <A ....>
    Par jejam dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/05/2006, 16h37
  3. Expression régulière pour plusieurs remplacements
    Par mickael99 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/02/2006, 12h15
  4. [RegEx] simple expression reguliere de decoupage url
    Par reski dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2006, 18h47
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h22

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