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 :

decouper une chaine de caractères suivant un séparateur


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut decouper une chaine de caractères suivant un séparateur
    Bonjour,

    Débutant, je développe un midlet et j’ai besoin d’une méthode qui peut me découper une chaine de caractères suivant un séparateur et retourner un tableau contenant ces éléments ;
    Je n’ai trouvé aucune méthode « préfaite » du genre « explode() » ou split() de php en java pour me faire ce boulot.

    Voici ma methode développée :
    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
     
    public String[] decoupe(String ligneEntree,String separateur) {
          if (ligneEntree == null) return null;
     
          int index = 0,i=0;      String[] lig=null; 
          String temporaire = ligneEntree;
     
    if (temporaire != null) {
                index = temporaire.indexOf(separateur);
                System.out.println("ligneEntree : "+ligneEntree+" > premier index : "+index);
                while (index >= 0) {
                   lig[i] = temporaire.substring(0, index); 
                   i++;
                   System.out.println("\n index de la sous chaine"+index+"\n valeur de la sous chaine"+lig[i]);
                  temporaire = temporaire.substring(index + separateur.length(), temporaire.length());
                  index = temporaire.indexOf(separateur);
                }
                // Le dernier élément            
    lig[i] = temporaire.substring(0, index);
          }
          return lig;
        }
    Un appel de cette méthode avec le séparateur « : » pour la chaine suivante « soleil:soleil:s:60 » me retourne l'exception suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ligneEntree : soleil:soleil:s:60 > premier index : 6
    Unable to create MIDlet Meteo.Meteo
    java.lang.NullPointerException
            at Meteo.Meteo.decoupe(Meteo.java:225)
            at Meteo.Meteo.<init>(Meteo.java:58)
            at java.lang.Class.runCustomCode(+0)
            at com.sun.midp.midlet.MIDletState.createMIDlet(+19)
            at com.sun.midp.midlet.Selector.run(Selector.java:151)
    Execution completed.
    Quelqu’un peut-il m’éclairer sur comment résoudre ce pb ; personnellement je ne vois pas pourquoi j’ai cette exception.
    Merci

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par sayuiki Voir le message
    Je n’ai trouvé aucune méthode « préfaite » du genre « explode() » ou split() de php en java pour me faire ce boulot.
    split()

    a++

  3. #3
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut où trouver Split() ?
    Merci pour cette reponse rapide.

    néammoins je n'arrive pas à trouver cette méthode split();

    Mon ide est netbeans 5.5.1 , et j'ai bien fait un : import java.lang.String;

    Mais à la completion je ne trouve pas la méthode Split()? est-ce un pb de version?

    java -version me retourne :

    java version "1.6.0_02"
    Java(TM) SE Runtime Environment (build 1.6.0_02-b05)
    Java HotSpot(TM) Client VM (build 1.6.0_02-b05, mixed mode, sharing)

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Comme c'est indiqué dans le lien, split() est disponible depuis Java 1.4... donc ce ne soit pas être un problème de version...


    Citation Envoyé par sayuiki
    Mais à la completion je ne trouve pas la méthode Split()?
    Pas de majuscule pour les méthodes... le problème ne viendrait-il pas tout simplement de là ?

    a++

  5. #5
    Membre habitué Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 149
    Points
    149
    Par défaut
    Bonjour, j'ai le même soucis, je voudrais découper une chaîne de caractère suivant un séparateur et avec le Split(), j'arrive pas. merci

  6. #6
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par cashmoney Voir le message
    Bonjour, j'ai le même soucis, je voudrais découper une chaîne de caractère suivant un séparateur et avec le Split(), j'arrive pas. merci
    Salut,

    Qu'est ce qui ne marche pas, quelle erreur obtiens-tu, tu veux découper suivant quel séparateur?
    Donne plus de détails.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Citation Envoyé par cashmoney Voir le message
    Bonjour, j'ai le même soucis, je voudrais découper une chaîne de caractère suivant un séparateur et avec le Split(), j'arrive pas. merci
    Le mieux serait de créer un nouveau post !

    Le lien qu'adiGuba a donné fournit un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String[] découpé = "boo:and:foo".split(":");
    // découpé[0] = "boo", découpé[1] = "and" et découpé[2] = "foo"
    String[] deuxième = "boo:and:foo".split("o");
    // deuxième[0] = "b", deuxième[1] = "" et deuxième[2] = ":and:"
    Cordialement

  8. #8
    Membre habitué Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 149
    Points
    149
    Par défaut
    je voudrais découpé selon un point "." ou un espace " ".

  9. #9
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String message = "cou cou";
    String message2 = "cou.cou";
    String[] messageSepare = message.split(" ");
    String[] message2Separe = message2.split(".");
    Normalement c'est comme ça

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Je pense plutôt qu'il a "aa.bb cc.dd", et qu'il veut obtenir {"aa","bb","cc","dd"}. Si c'est ça, je ne pense pas qu'il y ait de solutions, il faudra le faire toi même.

  11. #11
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par NutellaPiou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String message = "cou cou";
    String message2 = "cou.cou";
    String[] messageSepare = message.split(" ");
    String[] message2Separe = message2.split(".");
    Normalement c'est comme ça
    Heu non, ça, ça ne fonctionnera pas.

    La méthode split utilise les expressions régulières pour exprimer le séparateur.

    Or le point est un caractères spécial pour les expressions régulières vu qu'il permet de remplacer n'importe quel caractère (joker). Il est nécessaire de l'échapper pour le prendre en compte en tant que point et non en tant que caractère joker qu'il est (en utilisant un caractère antislash double).

    De plus pour exprimer un séparateur espace, il faut exprimer l'expression "\\s"

    Il faudrait donc plutôt faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String message = "abc.abc tr"
    String[] elements = message.split("\\s"); //split avec espace
    // contient ["abc.abc", "tr"]
    String[] elements2 = message.split("\\."); //split avec point
    // contient ["abc", "abc tr"]
    String[] elements3 = message.split("[\\.\\s]"); //split avec espace et point
    // contient ["abc", "abc", "tr"]
    Plus d'info sur les expression régulières en Java en regardant la javadoc de la classe Pattern, qui est la classe représentant celles-ci.

    Tu peux aller voir ça aussi pour l'histoire des antislashs à doubler.

  12. #12
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Pour le point c'est juste il faut ajouter un \\ j'avais oublié

    Mais pour l'espace ça fonctionne très bien sans le \\

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/12/2011, 11h41
  2. Réponses: 7
    Dernier message: 28/11/2010, 03h53
  3. Réponses: 6
    Dernier message: 15/04/2007, 14h06
  4. decouper une chaine de caractères
    Par MATH_03 dans le forum Access
    Réponses: 3
    Dernier message: 14/12/2006, 02h11
  5. [Tableaux] decouper une chaine de caractères
    Par pekka77 dans le forum Langage
    Réponses: 12
    Dernier message: 03/12/2005, 20h08

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