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 :

indexOf() d'une chaîne de charactères


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 61
    Points
    61
    Par défaut indexOf() d'une chaîne de charactères
    Bonjour,

    Je débute en Java et j'aimerai effectué la manip suivante:
    J'ai un nom de fichier qui est créé toute les heures.
    J'aurai donc les noms suivants :
    nomFichier 2011-10-02, nomFichier 2011-10-02 (1), ..., nomFichier 2011-10-02 (23).
    Je voudrais récupérer ce qu'il y a dans la parenthèse et afficher 0 si il n'y a rien.
    Ce que j'ai fait pour l'instant :
    - Je créé une variable nomFichier qui récupère le nom de mon fichier
    - Je créé une autre variable heureFichier qui récupère ce qu'il y a entre les parenthèse grâce à indexOf() et je l'affiche
    - Je créé une condition sur le fait que si on trouve une parenthèse dans le nom du fichier on affiche ce qu'il y a dedans. Sinon on affiche 0.
    - J'obtiens bien ce que je veux pour 0 et les dizaines (10 à 23) mais pour les unités (1 à 9) il reste la dernière parenthèse :
    0
    1)
    2)
    ..
    10

    Avez-vous une idée pour supprimer cette parenthèse?

    Merci de m'avoir lu

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Pour ce genre de manipulation, les regex sont plus indiqués :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String parser ="fichier 2011-10-02 (23)"; // Ton exemple
    Pattern pattern = Pattern.compile("\((.*)\)"); // Ton pattern de recherche
     
    Matcher m=pattern.matcher(parser);
    System.out.println(m.group(1)); // Le premier groupe qui matche ton pattern
    Bon parcontre ma regex doit être foireuse (parce que j'en utilise pas souvent) donc inspire toi surtout (le pattern de recherche est surement à adapter).
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    [EDIT] Je me suis fait griller[/EDIT]

    Il me semble que l'utilisation des expressions régulières répondrait parfaitement à ton besoin car le nom de ton fichier correspondant parfaitement à un pattern bien défini.

    En utilisant les classes Pattern et Matcher et en utilisant les groups, tu devrais pouvoir t'en sortir sans trop de problème.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Merci de vos réponses.
    Je ne vois pas bien l'utilité d'une regex ici.
    La regex m'indiquera qu'il y a bien des chaînes du type de ma regex mais comment je pourrais récupérer la valeur contenu dans la parenthèse?
    Aussi, est-ce que les regex sont construites de la même façon qu'en PHP?

    Merci

  5. #5
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Bah fait un indexOf de la parenthèse ouvrante et un indexOf de la parenthèse fermante si le premier indexOf t'a donné une valeur > 0.

    Et tu fais un nomFichier.substring(indexOfOuvrante, indexOfFermante) pour récupérer ce qu'il y a à l'intérieur de la parenthèse (avec peut être un -1 pour le deuxième argument).

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Yes,
    J'allais revenir vers vous pour vous dire que j'avais fait exactement comme a dit billynirvana
    Merci à tous

  7. #7
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par Asli Bilal Voir le message
    Merci de vos réponses.
    Je ne vois pas bien l'utilité d'une regex ici.
    La regex m'indiquera qu'il y a bien des chaînes du type de ma regex mais comment je pourrais récupérer la valeur contenu dans la parenthèse?
    Aussi, est-ce que les regex sont construites de la même façon qu'en PHP?

    Merci
    L'utilisation des groups, te permet de récupérer un pattern particulier dans ton expression régulière. Dans les liens que je t'ai fourni, tu as normalement toutes les informations nécessaire pour le faire. L'exemple de Robin56 te montre également comment récupérer le contenu de ta parenthèse via l'appel de la methode m.group(1).

  8. #8
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par benratti Voir le message
    L'utilisation des groups, te permet de récupérer un pattern particulier dans ton expression régulière. Dans les liens que je t'ai fourni, tu as normalement toutes les informations nécessaire pour le faire. L'exemple de Robin56 te montre également comment récupérer le contenu de ta parenthèse via l'appel de la methode m.group(1).


    Une expression régulière permet de vérifier la conformité avec un format mais permet aussi d'extraire un contenu respectant ce format.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. ajouter un charactère à une chaîne
    Par loupinter dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 25/02/2010, 10h35
  3. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  4. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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