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 :

[StringTokenizer] Pb de découpage


Sujet :

Langage Java

  1. #1
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut [StringTokenizer] Pb de découpage
    Bonjour à tous,

    je suis face à un petit problème avec la classe StringTokenizer

    prenons le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StringTokenizer token = new StringTokenizer("toto<h2>salut<234>", "<br>");
    while(token.hasMoreTokens())
      System.out.println(token.nextToken());
    quel est le résultat d'après vous ? Moi, je pensais qu'il n'y aurait qu'un seul affichage dans la console, formé de toute la chaine (en effet, la chaine "<br>" n'existe pas dans la chaine à analyser et donc il n'y a pas de point de découpage)... ce qui nous donne comme résultat une seule chaine... Logique non ?

    Et bien ça ne se passe pas comme ça !

    Le résultat donne cela :
    toto
    h2
    salut
    234
    Bin là j'y perd mon latin ! Pas vous ?

    bigboomshakala aide-moooooiiiii !

    PS: pas la peine de me proposer les regexp, je suis en java 1.3...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  2. #2
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Points : 174
    Points
    174
    Par défaut
    La je vois pas trop ce qui se passe, mais utilise StringTokenizer(String str, String delimiter, boolean returnDelimiter) pour voir ce qui est interprete comme delimiteur.
    The path of excess
    leads to the tower of wisdom.
    (Enigma)

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    alors les délimiteurs sont "<" et ">"...

    le résultat donne cela :

    toto
    <
    h2
    >
    salut
    <
    234
    >
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  4. #4
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Lut,

    chacun des caractères de "<br>" est utilisé comme délimiteur.

    Donc "<" est délimiteur, "r" est un autre délimiteur, ainsi que "b" et ">".

    Donc, résultat logique, ta chqaîne est splitéée chaque fois qu'on tombe sur '<' ou 'b' ou 'r' ou '>'.

    Non?

    EDIT: en lisant la javadoc:
    The characters in the delim argument are the delimiters for separating tokens
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    StringTokenizer découpe suivant un caractère et non suivant une chaîne de caractères, or quand tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    StringTokenizer token = new StringTokenizer("toto<h2>salut<234>", "<br>"); 
    while(token.hasMoreTokens()) 
      System.out.println(token.nextToken());
    Ca veut dire qu'il va chercher les délimiteur: '<' ou '>' ou 'b' ou 'r' d'où ton résultat il ne va pas chercher le délimiteur "<br>" dans son intégralité...


  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    [quote="thibaut"]
    Ca veut dire qu'il va chercher les délimiteur: '<' ou '>' ou 'b' ou 'r' d'où ton résultat il ne va pas chercher le délimiteur "<br>" dans son intégralité...
    [quote]

    arf... ok, je comprend maintenant !

    euh, z'avez pas un moyen de faire une découpe selon une chaine complète ?
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  7. #7
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Points : 174
    Points
    174
    Par défaut
    Je viens de regarder d'un peu plus pres la javadoc, et c'est un comportement normal :
    Constructs a string tokenizer for the specified string. All characters in the delim argument are the delimiters for separating tokens.
    Il faut donc comprendre qu'il n'interprete pas le delimiteur comme un "mot" mais plutot comme une suite de delimiteurs.
    Va falloir te creuser la tete pour trouver une solution, surtout si tu reste en 1.3

    Edit : je viens de voir que j'ai ete lent...
    The path of excess
    leads to the tower of wisdom.
    (Enigma)

  8. #8
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Avec StringTokenizer non, il faut que tu utilises RegExp ou quelquechose de similaire, regarde par exemple la méthode split de String...


  9. #9
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Lut,
    en 1.3, il va falloir te faire une méthode utilisant les indexOf(String) et substring(int, int).

    Ca fait un p'tit exercice, 10 minutes à jouer avec les index et basta
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  10. #10
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Tu peux utiliser le package de chez oreilly RegExp... Je l'ai déjà fait.

  11. #11
    Membre averti

    Inscrit en
    Novembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 18
    Points : 440
    Points
    440
    Par défaut
    Salut,

    En fait le résultat que tu obtient est logique, ben oui on n'obtient pas un résultat aléatoire surtout quand les balises sont aussi bien découpées non ???
    En fait cette méthode fais appel à une autre classe qui sert à découper tes mots selon la langue, voir internationalisation de Java pour plus de détails ...

    Pour parser ta chaine correctement, utilise la méthode split avec une simple expression régulière :
    maChaine.split("<.>"); // Si mes souvenirs de regexp sont bons ca découpera tous les mots entre n'importe quelle balise ....
    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String,%20int)

    Comme quoi la javadoc est un outil indispensable aux développeurs ... ;-)

    @+

  12. #12
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    > julien_chable: je pense que ça vaudrait la peine de lire toute la discussion avant de poster... y'aurait moins de redites...
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  13. #13
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par julien_chable
    Salut,

    En fait le résultat que tu obtient est logique, ben oui on n'obtient pas un résultat aléatoire surtout quand les balises sont aussi bien découpées non ???
    En fait cette méthode fais appel à une autre classe qui sert à découper tes mots selon la langue, voir internationalisation de Java pour plus de détails ...

    Pour parser ta chaine correctement, utilise la méthode split avec une simple expression régulière :
    maChaine.split("<.>"); // Si mes souvenirs de regexp sont bons ca découpera tous les mots entre n'importe quelle balise ....
    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String,%20int)

    Comme quoi la javadoc est un outil indispensable aux développeurs ... ;-)

    @+
    C'est beau tout ça, ton cours magistral et tout ça et tout ça, mais le gars il utilises le JDK 1.3 alors split en 1.3 je connais pas !!!

    Comme quoi la javadoc est un outil indispensable aux développeurs ...
    Oui mais avant tout ce sont les yeux qui sont indispensables au développeur, alors tâche de bien les utiliser...

  14. #14
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut Re: [StringTokenizer] Pb de découpage
    arf, c'est vrai je l'avais noté en petit, mais je le remet en plus grand:
    Citation Envoyé par Pill_S
    PS: pas la peine de me proposer les regexp, je suis en java 1.3...
    Citation Envoyé par thibaut
    C'est beau tout ça, ton cours magistral et tout ça et tout ça, mais le gars il utilises le JDK 1.3 alors split en 1.3 je connais pas !!!
    merci de me soutenir mais faut pas trop le casser non plus, il essayait de m'aider 8) (merci d'avoir essayé julien_chable, même si t'es tombé un peu hors sujet)

    bon bah je vais partir sur les indexOf et autres substring

    pour votre aide

    @+
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  15. #15
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Pourquoi ne veux-tu pas passer par RegExp ???

  16. #16
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    parce que je développe avec le jdk 1.5, mais je voudrais pouvoir exécuter avec les jre 1.3 et +.

    concernant le package regexp d'oreilly, je ne pense pas que cela soit judicieux... mon prog est une applet, et c'est bien connu, les applets doivent être les plus petites possible. Donc si cette API ne pèse disons que 100Ko et que mon applet en fait 5Ko à la base, je trouve un peu tiré par les cheveux... pas vraiment optimisé !
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  17. #17
    Membre averti

    Inscrit en
    Novembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 18
    Points : 440
    Points
    440
    Par défaut
    En tout cas merci pour les commentaires, quand on essaye d'aider on se fait jeter ... oui effectivement je n'avais pas vu la phrase en tout petit spécifiant l'utilisation du JDK 1.3 (l'écran fatigue mes petits yeux fragiles avec le temps que je passe devant ...) bien que j'ai relu 2 fois les posts dans leur intégralité ...

    Merci ça donne envie de participer ... j'ai l'impression que c'est un peu comme-ci j'avais insulter quelqu'un ... sympa le forum !!! Moi qui croyait qu'entre développeurs et personnes qui veulent aider les autres (surtout ça), on pourrait s'entendre ...

    Donc même si les yeux sont une chose indispensable à un développeur tout comme l'est son cerveau, cela doit aller de concert avec son comportement (éducation ?) surtout quand on est modérateur d'un forum !!!!

    Ciao

  18. #18
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    bah faut pas le prendre comme ça mec !!

    faut aussi dire que tu t'es pointé là tel le gros, et que tu m'as un peu pris pour un bouffon (genre "Ha c'que t'es con, faut lire la javadoc !") !

    bon on arrête là, ok ? mais le respect ça va dans les 2 sens
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

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

Discussions similaires

  1. [StringTokenizer] Découpage de droite à gauche ?
    Par july dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2005, 12h02
  2. Découpage de chaine de caractère
    Par tcharles dans le forum C++
    Réponses: 11
    Dernier message: 23/08/2004, 14h34
  3. [stringtokenizer] probleme avec champs vides
    Par gege2mars dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2004, 08h25
  4. découpage d'une chaine de caractère
    Par lamojuli dans le forum ASP
    Réponses: 4
    Dernier message: 13/05/2004, 15h00
  5. Réponses: 10
    Dernier message: 17/12/2003, 13h51

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