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

API standards et tierces Java Discussion :

Gestion chaine caractère


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de fatenatwork
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 129
    Par défaut Gestion chaine caractère
    Bonjour,
    ayant une chaine comme:
    Test (+333),
    je veux savoir comment faire en Java pour extraire à chaque fois que "Test" et "+333",
    sachant que toutes mes chaines ont sont du genre:

    Test (+333)
    ABC (+669)
    ...

    Merci

  2. #2
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Recherche les index des caractères "(" et ")" dans la chaîne, et extrait les bonnes parties avec des sous chaines avec la méthode substring.

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Le plus simple c'est d'utiliser les expression régulières (voir la documentation associée).

    Exemple d'expression réguilière qui pourrait d'intéresser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pattern p = Pattern.compile("(\\w+)\\(\\+(\\d+)\\)");   //pattern (\w+)\(\+(\d+)\)
    Matcher m = p.matcher(chaine);
    if (m.matches){
        String text = m.group(1);
        String nombre = m.group(2);
    }

  4. #4
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le plus simple c'est d'utiliser les expression régulières (voir la documentation associée).
    Entièrement d'accord, même si je ne trouve pas personnellement qu'il soit plus simple d'écrire une regexp dans le cas de chaînes simples

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ca reste plus facile à lire que du code avec des substring et des indexof, créant au minimum 2 index à suivre la regexp, en elle meme est une description complete du mécanisme de split qui va etre utilisé, même si, dans une string java, le doublement des \ surcharge un peu

  6. #6
    Membre confirmé Avatar de fatenatwork
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 129
    Par défaut Utilisation des expressions régulières pour filtrer
    pour mes chaines de la forme:

    ACORES (+35192)
    ALASKA (+1907)
    AE INMARSAT - A (+8711)

    il me semble que l'expression régulière : (\\w+)\\(\\+(\\d+)\\) est OK
    Pattern p = Pattern.compile("(\\w+)\\(\\+(\\d+)\\)");

    mais avec le test matches ça passe pas

  7. #7
    Membre confirmé Avatar de fatenatwork
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 129
    Par défaut REgExp ou autre solution
    Sachant que mes chaines de caractère peuvent varier en ce qui concerne la partie avant la première paranthèse:
    genre:

    ABC (+123) ou A B C (+123) ou AB -C (+123).
    je pense qu'il vaut mieux détecter les parenthèses au lieu d'utiliser les regexp, non.??
    Merci

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par fatenatwork Voir le message
    pour mes chaines de la forme:

    ACORES (+35192)
    ALASKA (+1907)
    AE INMARSAT - A (+8711)

    il me semble que l'expression régulière : (\\w+)\\(\\+(\\d+)\\) est OK
    Pattern p = Pattern.compile("(\\w+)\\(\\+(\\d+)\\)");

    mais avec le test matches ça passe pas
    Ha ben moi j'avais repéré un mot clé des parenthèses et un chiffre. Maintenant si tout ce que tu veux c'est quelque chose, parenthèse, quelque chose, parenthèse, la regexp se simplifie vachement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern.compile("(.+)\\((.+)\\)"); // regexp (.+)\((.+)\)

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Par défaut
    Salut,

    Regarde du coté des expressions régulières en Java : http://cyberzoide.developpez.com/java/regex/

    Une expression du genre : "(\w+) \((\+\d{3})\)" (à vérifier lol)

    a+

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

Discussions similaires

  1. [WD18] gestion chaine de caractére
    Par nocri5810 dans le forum WinDev
    Réponses: 7
    Dernier message: 20/10/2013, 16h31
  2. Gestion des caractères spéciaux
    Par claralavraie dans le forum Oracle
    Réponses: 1
    Dernier message: 22/06/2006, 14h41
  3. [SAX] Récupération chaine caractère
    Par sebus dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/02/2006, 23h57
  4. [FPDF] Recherche chaine caractères dans fichier pdf
    Par licorne dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/10/2005, 11h55
  5. []recherche chaine caractère partielle
    Par cd090580 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/09/2005, 14h15

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