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

Collection et Stream Java Discussion :

[StringTokenizer] Découpage de droite à gauche ?


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut [StringTokenizer] Découpage de droite à gauche ?
    Bonjour à tous,
    J'aimerai découper une String. Cela fonctionne bien avec la classe StringTokenizer.
    Cependant mon problème est que j'aimerai découper de droite à gauche.
    En effet ma chaine est un chemin d'accès à un fichier qui est tjs différent et moi j'ai besoin du nom et de l'extension du fichier.
    Merci par avance

  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 Re: StringTokenizer : découpage de droite à gauche ?
    Salut,

    Tu peux utiliser la méthode split() de String qui te retourne un tableau dont tu utilises le derniers elements...


    Citation Envoyé par july
    En effet ma chaine est un chemin d'accès à un fichier qui est tjs différent et moi j'ai besoin du nom et de l'extension du fichier.
    Pourquoi ne pas utiliser la classe File ??

    a++

  3. #3
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Pourquoi n'utilises-tu pas une autre manière
    Comme celle-ci par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    File tonFile = new File("toto.txt");
    String filePath = tonFile.getAbsolutePath();
    while ((filePath.lastIndexOf('\\'))!=-1)
    {
           filePath = filePath.replace('\\','/');
    }
    int p = filePath.lastIndefOf("/");
    String filename = filePath.substring(p+1,filePath.length());
    Voilà
    Bonne chance
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 99
    Points : 82
    Points
    82
    Par défaut
    Salut,

    Il y a plusieurs possibilités tout d'abord si tu veux conserver un StringTokenizer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    StringBuffer buffer = new StringBuffer("Machaine");
    String maChaine2 = buffer.reverse().toString();
    StringTokenizer tokens = new StringTokenizer(maChaine2,"separator");
    while (tokens.hasMoreTokens()){
    ....
    }
    Mais on peut faire plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String [] tokens = maChaine.split("separator");
    for (int i = tokens.lenght()-1; i >= 0 ; i--){
      System.out.println(tokens[i]);
    }
    "Il n'existe que deux choses infinies, l'univers et la bêtise humaine... mais pour l'univers, je n'ai pas de certitude absolue." A. Einstein

  5. #5
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Rien ne t'empêche d'inverser la chaine, de faire le découpage en token, et d'inverser le premier token que tu obtiens, pour avoir ton fichier et son extension.. plus besoin de while avec un hasToken() !

    Couteux en CPU cependant, mais peut-être moins qu'un parcours integrale du StringTokenizer pour seulement récupérer le dernier element !

    Ne serait-il pas plus simple cependant d'éviter le StringTokenizer, en faisant une recherche du dernier caractère '\\' ( ou '/' sous *nix ) puis de faire un substring ?

    K
    K

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File fTmp = new File(tachaine);
    fTmp.getName();
    ne ré-inventez pas la roue, allez chercher dans les Commons de Jakarta

  7. #7
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Utiliser un File ne marchera que si le fichier existe vraiment.. Ce qui n'est peut-être pas le cas du posteur, sachant qu'il veut uniquement récuperer le nom du fichier apparement et non le contenu, mais peut-être qu'il a accès aux fichiers, et donc auquel cas oui utilise un File !

    K
    K

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    FAUX, que le fichier existe ou non la méthode getName renverra bien le nom du fichier.
    ne ré-inventez pas la roue, allez chercher dans les Commons de Jakarta

  9. #9
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    StringBuffer buffer = new StringBuffer("Machaine");
    String maChaine2 = buffer.reverse().toString();
    StringTokenizer tokens = new StringTokenizer(maChaine2,"separator");
    while (tokens.hasMoreTokens()){
    ....
    }
    L'idée était bonne mais le résultat moins...
    txt.3reihcif car on inverse : fichier3.txt

  10. #10
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    Je précise que j'ai besoin du nom du fichier afin de remplir une base de données mais pas forcément le fichier lui même !

  11. #11
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    Je précise que j'ai besoin du nom du fichier afin de remplir une base de données mais pas forcément de télécharger le fichier lui même !

  12. #12
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Je répèrte ce que j'ai dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ((filePath.lastIndexOf('\\'))!=-1)
    {
           filePath = filePath.replace('\\','/');
    }
    int p = filePath.lastIndefOf("/");
    String filename = filePath.substring(p+1,filePath.length());
    Ainsi ton code sera portable sous windows et Linux
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  13. #13
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par jcarre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File fTmp = new File(tachaine);
    fTmp.getName();
    Super ça, ça marche !
    Merci bp à tous

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

Discussions similaires

  1. Clic droit/gauche souris
    Par Mouse! dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 30/05/2013, 20h34
  2. Réponses: 4
    Dernier message: 09/11/2006, 00h32
  3. format de date de droite à gauche?
    Par dj_techno dans le forum Bases de données
    Réponses: 7
    Dernier message: 01/09/2006, 19h43
  4. ajouter une langue s'ecrivant de droite à gauche dans delphi7
    Par iam dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/07/2006, 12h45
  5. [VB.NET 2005] Recherche de droite à gauche d'un carractere
    Par lezard777 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 16h02

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