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

Collection et Stream Java Discussion :

Vérif de présence d'un mot avec matches()


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut Vérif de présence d'un mot avec matches()
    Bonjour à tous,
    j'ai déjà jetté un gros coup d'oeil à ce qu'il était possible de faire avec matches(), mais mon problème est spécial...
    J'ai un textField qui contient normalement une String (chemin vers une application externe, du type C:\Loxane\Way Pro\waypro.exe, qu'on peut lancer depuis la feuille principale grâce à un bouton.
    Au moment de fermer la feuille de paramétrage (options), je teste cette String pour voir si l'utilisateur a bien sélectionné l'exécutable (pour faire pro et pour eviter que des petits malins ne mettent à la place C:\windows\sol.exe pour lancer le solitaire, au lieu du programme de cartographie GPS comme c'est prévu. Aussi, j'utilise :
    public class Verif {

    //Vérification du chemin pour la cartographie, dans la feuille d'options
    public static boolean isCarto(String s) {
    boolean isValid = true;
    //Le textField peut être vide ou contenir "waypro.exe"
    //Au départ, j'avais essayé aussi juste avec s.matches"waypro.exe"
    //J'ai aussi essayé avec les symboles [blabla] ou "^waypro.exe$"
    if (!((s.matches("C:\\Loxane\\Way Pro\\waypro.exe")) || (s.trim().equals("")))) {
    JOptionPane.showMessageDialog(null,
    "Veuillez saisir un chemin ou un fichier exécutable correct.\nMerci.",
    "Erreur de saisie du chemin pour la cartographie",
    JOptionPane.OK_OPTION);
    return false;}

    return isValid;}
    }
    et le problème c'est qu'il n'accepte pas le chemin complet, mais juste "waypro.exe", ce qui est très bête.
    Bref, si vous avez une idée avec matches(), plutôt que de faire une moulinette ou un substring qui partirai de la droite pour remonter vers la gauche en comptant 10 caractères, n'hésitez pas.
    Merci à vous ! Cédric.

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    "^waypro.exe$"

    le probleme est
    ^: en debut
    $ : en fin

    si t enleve le chapeau ca devrait le faire

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut [java.util.*] Problème non résolu avec .matches()
    Hello
    je suis surpris de la rapidité avec laquelle tu m'as répondu, et ce, pour un vendredi soir !!
    Malheureusement, cela ne donne rien...
    Merci quand-même et à bientôt.

  4. #4
    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
    Tu doit échapper le caractère '.' qui dans un pattern représente n'importe quel caractère.
    De plus, en rajoutant le quantifieur '?' tu peux te passer du equals("")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if (!(s.trim().matches("(C:\\Loxane\\Way Pro\\waypro\\.exe)?")) {
    ...
    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

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    matches() n'est pas le plus adapté à ton cas, car il vérifie que l'intégralité de la chaine correspond au pattern. Il faudrait donc utiliser quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.matches(".*\\\\waypro\\.exe")
    Mais la méthode endsWith() me semble plus adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.endsWith("\\waypro.exe")
    a++

    PS : tu peux également utiliser la méthode exists() de la classe File pour vérifier la présence du fichier

    PS 2 : pour la prochaine fois :

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut Matches()
    Wahou, les gars ! Vos réponses sont très pro, et vous êtes balèzes !
    Merci pour votre aide !
    Certes, j'ai vu un peu tard qu'avec des balises (ex: code) c'est mieux.
    Je vais m'entraîner...
    Pas évident de connaître tout le règlement dès la 1ère fois
    A bientôt, sûrement !

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

Discussions similaires

  1. [XL-2013] valider la présence d'un mot dans une colonne avec .autofilter
    Par billybobbonnet dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/06/2014, 17h56
  2. Recherche de mot avec match approximatif
    Par nemoyth dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2010, 15h22
  3. Problème avec MATCH - FULLTEXT
    Par Kosti dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/01/2006, 01h20
  4. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41
  5. PB avec MATCH dans une requete.
    Par pjl dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/04/2004, 11h18

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