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 :

extraire des entiers d'une chaine de caractère


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 59
    Points
    59
    Par défaut extraire des entiers d'une chaine de caractère
    Salut,

    En fait, je suis débutante en Java et j'ai besoin de récuperer les entiers dans une chaine de charactere pour faire des calcul et puis les remplasser.
    Par example j'ai une balise svg qui va etre stocké comme une chaine de character: "<rect x='3' y='4' width='270' height='60' style='stroke:rgb(0,0,0);fill:url(#MyGradient)' />" alors j'aimerrai remplacer les 3 et 4 par 6 et 8.
    Dans ce cas la, est-ce qu'il y a une chose prete à faire ou je dois faire tous???

    Merci d'avance,

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Comme tu es débutante, que tu as l'air de vouloir quelque chose d'assez spécialisé, je pense que tu peux essayer par le biais du paquage java.io et par le repérage des infos que tu veux modifier dans le flux.

    Pour obtenir des entiers depuis une chaîne de caractères, tu peux utiliser java.lang.Integer, avec toutes les méthodes style parseInt ou valueOf.

    Les notions que tu découvriras te faciliteront la tâche, pour plus tard, si tu dois aborder la lecture / écriture de fichiers XML / SVG.

    Cependant, cette approche simple ne te permettra absolument pas de résoudre toutes les difficultés qui pourraient se présenter à toi.

    N'hésite pas à reposer des questions, à mon avis tu en auras besoin !

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 59
    Points
    59
    Par défaut
    Merci bcp pour ta réponse, mais si tu peux me donner un petit example car j'ai vu le doc du Java et je suis en train de chercher un example qui va faciliter les difficultées..
    Merci bcp,

  4. #4
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Un exemple de quoi ?... Excuse-moi, mais je n'ai pas le temps de te faire ton programme.

    Un exemple d'une possibilité de transformer une chaîne de caractères en entier, ce qui a l'air d'être ce qui t'intéresse le plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String quatre = "4";
    int nombreQuatre = Integer.parseInt(quatre);
    Avec ça je ne sais pas si tu vas aller très loin, mais enfin...

  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
    Salut,

    Alors je suppose que tu as plusieures balises à traiter avec des attributs différents.

    Est-ce que ce fichier peut-être considéré comme un fichier xml valide, si c'est le cas tu pourras utiliser un parseur genre sax. Si ce n'est pes la cas tu vas devoir créer ton propres parseur:

    - Lire le fichier XML sur le flux d'entrée (FileInputStream), stocker le contenu dans une châine de caractères ou un StringBuffer.

    - Découper la chaîne ainsi obtenue avec StringTokenizer ou par expressions régulières (RegExp).

    - Récupérer la valeur de l'attribut de la balise, la transformer en entier (Integer)

    - réecrire sur le flux de sortie FileOutputStream. Alors deux startégies: si tu as une seule balise dans ton fichier, tu peut écraser l'ancien fichier avec le contenu de la nouvelle chaîne avec la bonne valuer. Si ce n'est pas la cas, tu vas devoir te positionner sur la bonne ligne et mettre à jour le contenu avec RandomAccessFile.

    A+
    TK

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 59
    Points
    59
    Par défaut
    Merci pour votre aide mais l'exemple que j'ai donné, j'ai cru que c'est clair,
    c'est une balise xml <rect x="3" > par exemple comme t je peux recupere le 3 ,faire une operation math sur cette valeur et la remplacer du resultat obtenu.
    Mais pour moi ,la balise c'est une chaine de caractere car je lis cela d'une base de donnée.

    Merci....

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Je pense que les expressions régulièrse avec les classes Pattern et Matcher devrais convenir à ton problème.

  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
    Tu peux la parser avec Xerces et manipuler des objets DOM et la rémplacer et re-écrire la fichier en sérializant ce DOM.

    C'est vrai que c'est comme écraseer une mouche avec un enclume, ou lancer un division de panzers pour contre un groupe de quatre assaillants... mais bon.

    A+

  9. #9
    Membre actif Avatar de Seb19
    Homme Profil pro
    Concepteur SOA
    Inscrit en
    Septembre 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur SOA

    Informations forums :
    Inscription : Septembre 2005
    Messages : 217
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par 18Marie
    la balise c'est une chaine de caractere car je lis cela d'une base de donnée.
    Boujour,

    Dans ce cas, un split ou un StringTokeniser avec comme séparateur le caractère ' te découpera ta chaine en un tableau de string, puis il te suffira de parser la chaine adéquate en Integer pour faire des calculs.

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Voila une petite méthode qui récupère les options d'une balise et les mets dans une Map (toujours sous forme de String).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static final Map<String, String> extractOptions(String baliseXML) {
        Map<String, String> map = new HashMap<String, String>();
        Matcher matcher = Pattern.compile("[a-z]+=(('.+?')|(\".+?\"))").matcher(baliseXML);
        while(matcher.find()) {
           String[] option = matcher.group().split("=");
           map.put(option[0], option[1].replaceAll("(^('|\"))|(('|\")$)", ""));
        }
        return map;
    }
    Avec ça, tu peux facilement travailler avec les valeurs de tes options .

Discussions similaires

  1. Extraire des nombres dans une chaine de caractère
    Par fxfxfx dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/05/2013, 10h41
  2. Extraire des champs dans une chaine de caractère
    Par clemuche dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2009, 23h24
  3. [Tableaux] Extraire des mots d'une chaine de caractères
    Par pratiquement dans le forum Langage
    Réponses: 5
    Dernier message: 24/01/2008, 09h20
  4. [MySQL] extraire des nombre d'une chaine de caractères et addition
    Par Yotho dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/03/2006, 16h54
  5. Réponses: 9
    Dernier message: 17/01/2003, 11h45

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