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 :

Récupérer une partie de chaîne


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Récupérer une partie de chaîne
    Bonjour,

    je dois récupérer les 4 derniers caractères juste avant le "." dans le nom d'un fichier. Sachant que le nombre de caractères avant les 4 derniers peut-être aléatoire, je souhaiterais récupérer ces 4 derniers caractères à partir du "."

    Exemple : nom_du_fichier_ddddeeee.xml => je dois récupérer eeee
    Ou : nom_du_fichier_plus_long_dfdfdeeee => je dois récupérer eeee

    J'ai tenté avec des substrings, lastIndexOff mais je dois m'embrouiller sur l'enchaînement des commandes...

    Merci pour votre retour.

    @+

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Donne ton code car ma boule de cristal en bois est un peu rouillée

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Points : 127
    Points
    127
    Par défaut
    Oui il y a bien du substring et du lastIndexOf après suffit de boucler je me suis pris la peine de le faire

    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
     
        public static void main(String[] args) 
        {
            System.out.println(getLastCharBeforeDot("nom_du_fichier_ddddeeef.xml"));
        }
     
        public static String getLastCharBeforeDot(String fileName)
        {
            String buffer =""; //initialise la variable
            String name = fileName.substring(0, fileName.lastIndexOf(".")); //Je récupère le string entre la position 0 et jusqu'au dernier point de la chaine
            int index = name.length() - 4; //Je choisis ou je me place, en occurrence je prends la taille de la chaine et je lui enleve 4 (tu peux mettre 5 si tu veux les 5 dernières)
            for(int i = index; i < name.length(); i++)
            {
                buffer += name.charAt(i); // j'ajoute chaque lettre rencontrée
            }
            return buffer;
        }
    Et là tu obtiens :

    run:
    eeef
    BUILD SUCCESSFUL (total time: 0 seconds)

    PS : après je sais pas si tu connais les fichiers à l'avance ou non mais sinon tu devrais vérifer que le contenu avant le point fasse bien 4 lettres au plus ^^ sinon erreur

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 562
    Points : 21 625
    Points
    21 625
    Par défaut
    Boucler ?
    Euh... substring() aurait fait l'affaire, tu ne crois pas ?

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    La réponse de Kangourex est particulièrement complexe pour ce qu'on veux faire ici. Je me permet donc de proposer une autre version plus simple et une version utilisant les exprésion régulière :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package org.k.developpez.forum;
     
    import java.io.IOException;
    import java.io.PrintStream;
    import java.nio.charset.Charset;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class Test {
     
    	public static void main(String[] args) throws IOException {
    		  System.out.println(getViaRegex("nom_du_fichier_ddddeeef.xml"));
    		  System.out.println(getViaSubstring("nom_du_fichier_ddddeeef.xml"));
    	}
     
    	private static String getViaSubstring(String string) {
    		if(string.lastIndexOf(".")>4){
    			return string.substring(string.lastIndexOf(".")-4, string.lastIndexOf("."));
    		}
    		return null;
    	}
     
    	private static String getViaRegex(String string) {
    		// regex Qui match ce qu'on cherche  =>  (.{4})\.[^\.]*$
    		// Voir http://cyberzoide.developpez.com/tutoriels/java/regex/
    		// compilation de la regex
    		Pattern p = Pattern.compile(".*(.{4})\\.[^\\.]*$");
    		// Note : On a ajouté .* devant ce qu'on cherche pour que l'ensemble match.
    		// création d'un moteur de recherche
    		Matcher m = p.matcher(string);
    		// lancement de la recherche de toutes les occurrences
    		boolean b = m.matches();
    		// si recherche fructueuse
    		if(b) {
    		    return  m.group(1);
    		}
     
    		return null;
    	}
    }
    Note dans le cas où le nom du fichier est inférieur à 34 caractères, mais qu'on veux malgré tout ceux-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	private static String getViaSubstring(String string) {
    		if(string.lastIndexOf(".")>-1){
    			return string.substring(Math.max(0, string.lastIndexOf(".")-4), string.lastIndexOf("."));
    		}
    		return null;
    	}
    Cordialement,
    Patrick Koldoziejczyk.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Boucler ?
    Euh... substring() aurait fait l'affaire, tu ne crois pas ?
    Si bien sûr, mais comme il avait souligné J'ai tenté avec des substrings, lastIndexOff mais je dois m'embrouiller sur l'enchaînement des commandes.... J'ai jugé plus intelligent de lui montrer qu'on pouvait contourner le problème étant donné que nous sommes dans la section débutant.

Discussions similaires

  1. Récupérer une partie d’une chaîne de caractères
    Par pheonix00fr dans le forum Excel
    Réponses: 2
    Dernier message: 18/12/2014, 17h34
  2. Réponses: 3
    Dernier message: 01/08/2007, 11h49
  3. comment récupérer une partie d'une chaine
    Par yannickrohel dans le forum C
    Réponses: 7
    Dernier message: 27/02/2006, 10h31
  4. récupérer une partie d'un char*
    Par r0d dans le forum C
    Réponses: 5
    Dernier message: 10/11/2005, 14h14
  5. Récupérer une partie d'une chaine de caractère
    Par Cyborg289 dans le forum Langage
    Réponses: 5
    Dernier message: 07/07/2005, 14h06

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