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 :

Recherche et manipulaton de mots dans un String


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut Recherche et manipulaton de mots dans un String
    Bonjour,

    Je souhaite rechercher et manipuler facilement les mots dans une chaine de caractère.
    Voila ce que je souhaiterais faire :
    -> Rechercher les occurences d'un pattern
    -> Remplacer certains mots du pattern trouvé par d'autres.

    Un exemple concret :
    J'ai la chaine
    distance : 38 m
    Vitesse : 35 Km/h
    Poids : 96 Kg
    Hauteur : 45 m
    Je souhaite par exemple modifier toutes les unités en m (ici, distance et hauteur) par des cm.
    Y a t'il un moyen simple et efficace de faire ceci ? La classe String ne me semble pas répondre à mon besoin.

    Je cherche pas à ce qu'on me donne la solution mais juste des idées et quelques éléments de réponses.
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    La bonne solution semble les expressions rationnelles, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pattern p=Pattern.compile("(distance : )(\\d*) m");
    Matcher m=p.matcher("distance : 38 m");
    if(m.find()){
    String s=m.replaceAll(m.group(1)+m.group(2)+"00 cm");
    System.out.println(s);
    http://java.sun.com/j2se/1.5.0/docs/...x/Pattern.html
    http://java.sun.com/j2se/1.5.0/docs/...x/Matcher.html

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut
    Effectivement ça a l'air de correspondre à ce que je souhaite, merci beaucoup.
    Je connaissais déjà les classes Pattern et Matcher mais je n'avais pas saisi l'utilisaton de la méthode group ... apparemment c'est bien ce que je veux.

    Par contre un truc sur les regexp :
    Le (\\d*) fonctionne avec des nombres décimaux ?

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    '\\d' signifie "un chiffre compris entre 0 et 9", "\\d*" signifie une suite de chiffres.
    Pour matcher des chiffres décimaux:
    "(\\d*)\\.?(\\d*)" et récupérer les parties décimale et entière.

  5. #5
    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 : 42
    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
    Par défaut
    Citation Envoyé par Slayne
    Par contre un truc sur les regexp :
    Le (\\d*) fonctionne avec des nombres décimaux ?
    Non, le pattern \d représente un chiffre (équivalent au pattern [0-9]).
    Pour un nombre décimal tu peut utiliser le pattern \d+((\.|,)\d+)? (cette expression régulière représente un nombre qui utilise indifférement le caractère '.' ou ',' comme séparateur des décimals).

    [edit]
    grilled
    cependant seriousme, ton pattern accepte : ".9", "9." et même "."
    [/edit]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Par défaut
    Effectivement, je sais pas pourquoi j'ai parlé de réél juste avant, c'était stupide
    Bon je devrais largement pouvoir me débrouiller avec ça. Merci à vous 2 !

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    cependant seriousme, ton pattern accepte : ".9", "9." et même "."
    Pour "\\d*" c'est vrai que ce n'est pas forcément approprié.
    Mais ".9" est un raccourci souvent utilisé, y compris en Java.
    De même "9." sert à indiqué explicitement que le nombre est un "float", par exemple en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("%f\n",9);
    printf("%f\n",9.);
    la première ligne provoque l'affichage de "0.000000", la deuxième l'affichage de "9.000000".

  8. #8
    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 : 42
    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
    Par défaut
    C'est vrai qu'il peut être interessant d'accepter ".9" ou "9.", cependant ton pattern accepte aussi "." et "" ce qui oblige à des traitements suplémentaire dans le cas où l'on veuille récupérer la valeur via un parseFloat() ou un parseDouble() (bon je suis d'accord c'est du chipotage ).
    Pour accepter les ".9" et "9." mais pas "." ni "", ceci semble marcher : (\d+(\.\d*)?)|(\d*\.\d+)
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

Discussions similaires

  1. Rechercher et remplacer un mot dans un module feuille
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/10/2008, 04h59
  2. Réponses: 2
    Dernier message: 27/01/2008, 11h53
  3. Réponses: 2
    Dernier message: 30/11/2007, 13h55
  4. Recupération d'un mot dans un String
    Par Katachana dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 02/07/2007, 11h11
  5. Recherche le nombre de mots dans un fichier
    Par peppena dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2006, 10h46

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