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 :

Découpage d'une String


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Découpage d'une String
    Bonjour

    Débutant Java, je souhaite détacher d'une String les caractères entre les dièses. Après investigation, voici ci-dessous ce que j'ai codé et le résultat (qui est bien le résultat recherché) mais peut-être y aurait t-il une méthode plus optimale (ici, une copie répétée de la String d'origine)

    Merci
    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
    String s = "ab#cde#fg#hijk#";
    String s1;
    int taille, ind;
     
    Code :
    /**
     * Objectif : obtenir successivement dans s1 :
     * ab
     * cde
     * fg
     * hijk
     */
     
    taille = s.length();
     
    ind = 0;
    s1 = s.substring(0,s.indexOf("#"));
    System.out.println("s1 = " + s1);        
    ind = ind + (s1.length()+1);
     
    while (ind < taille) {            
                s1 = s.substring(ind,taille);
                System.out.println("s1 intermédiaire = " + s1);
                s1 = s1.substring(0,s1.indexOf("#"));
                System.out.println("s1 = " + s1);            
                ind = ind+(s1.length()+1);
    } // Fin while
    Résultat :
    run:
    s1 = ab
    s1 intermédiaire = cde#fg#hijk#
    s1 = cde
    s1 intermédiaire = fg#hijk#
    s1 = fg
    s1 intermédiaire = hijk#
    s1 = hijk

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Ca dépend ce que tu cherches a afficher précisément mais je te conseille de regarder l'API du coté de la méthode split() de la classe String.

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Comme le dis -ULK-, tu dois utiliser la méthode de String split qui fera très bien l'affaire, en beaucoup plus court.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String[] tab = s.split("#");
    for(int i=0 ; i< tab.length ; i++) {
        System.out.println(tab[i]);
    }

  4. #4
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 127
    Points : 76
    Points
    76
    Par défaut
    Perso j'utilise la classe StringTokenizer() qui est vraiment top.

    Bon c'est à vérifier sur la javadoc, mais de mémoire :

    tu déclare une StringTokenizer comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StringTokenizer tok = new StringTokenizer(stringDeBase, "#")
    et ensuite tu peux récupérer le nombre de bouts de string découpables
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbString = tok.countTokens()
    et chaque bout de string est récupérer par
    J'utilise énormément cette classe, mais si quelqu'un trouve qu'il y a beaucoup mieux, je suis à l'écoute.
    Le GridBagLayout est mon ami ! (mais si, mais si...)

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Citation Envoyé par firgon Voir le message
    Perso j'utilise la classe StringTokenizer() qui est vraiment top.

    Bon c'est à vérifier sur la javadoc, mais de mémoire :

    tu déclare une StringTokenizer comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StringTokenizer tok = new StringTokenizer(stringDeBase, "#")
    et ensuite tu peux récupérer le nombre de bouts de string découpables
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbString = tok.countTokens()
    et chaque bout de string est récupérer par
    J'utilise énormément cette classe, mais si quelqu'un trouve qu'il y a beaucoup mieux, je suis à l'écoute.
    Justement la méthode split de String est beaucoup plus simple d'utilisation.
    Et elle renvoie un tableau de String plutôt que de devoir faire nextToken pour récupérer chaque élément, que l'on doit ensuite stocker dans une nouvelle String si on veut y accéder de nouveau.
    Tu n'as pas non plus besoin d'instancier un nouvel objet du genre de StringTokenizer.
    ps : j'utilisais aussi cet objet avant de connaitre split, et ça m'a changé la vie

  6. #6
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 127
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    Justement la méthode split de String est beaucoup plus simple d'utilisation.
    Et elle renvoie un tableau de String plutôt que de devoir faire nextToken pour récupérer chaque élément, que l'on doit ensuite stocker dans une nouvelle String si on veut y accéder de nouveau.
    Tu n'as pas non plus besoin d'instancier un nouvel objet du genre de StringTokenizer.
    ps : j'utilisais aussi cet objet avant de connaitre split, et ça m'a changé la vie
    Oui, moi aussi ça pourrait changer le visage de mes programmes... Je ré-écrirais pas tout juste pour cela, mais à l'occasion, c'est effectivement une méthode à connaitre que cette split()
    Le GridBagLayout est mon ami ! (mais si, mais si...)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci à tous -ULK-, CheryBen, firgon

    Ainsi, je peux résoudre élégamment mon problème.
    Ceci m'a conduit à examiner plus attentivement la classes String et les méthodes associées.

    Donc, je comprends la méthode de CheryBen comme suit :
    'tab' est un tableau de 4 chaînes de caractères obtenu depuis la chaîne s via le séparateur # et chaque pas de la boucle 'for' imprime un élément du tableau.

    Les propositions de firgon m'ont amené à jeter un oeil sur la classe StringTokenizer :

    http://java.sun.com/j2se/1.4.2/docs/...Tokenizer.html

    et j'y ai lu ceci :

    StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

    Bonne continuation à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/04/2015, 11h28
  2. Vérification et découpage d'une string
    Par regliss76 dans le forum C++
    Réponses: 12
    Dernier message: 09/09/2010, 11h53
  3. Découpage d'une string
    Par DarkLeon dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/02/2009, 16h27
  4. Découpage d'une string
    Par metalcoyote dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 24/01/2007, 16h49
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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