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 :

evaluer une String


Sujet :

Langage Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut evaluer une String
    Bonjour,
    j'ai une expression logique dans une String, par exemple String str="(true | false) & true".
    Je veux evaluer cette expression comme si c'etait un booleen
    J'aimerais ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (str) { int test=0; }
    Mais ce code est faux. J'ai besoin d'une fonction "eval" qui evalue l'expression contenue dans str, de maniere a ce que je puisse ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (eval(str)) { int test=0; }
    Comment puis-je faire ? Merci pour vos reponses.

  2. #2
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Salut.

    Si tu utilise Java 6, tu as la possibilité d'utiliser javascript au sein de Java.

    Ainsi tu pourrais utiliser la fonction eval de javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                   String taStringAEvaluer = "true"
                    ScriptEngineManager manager = new ScriptEngineManager();
    		ScriptEngine engine = manager.getEngineByName("js");//instanciation du moteur javascript
    		engine.put("str", taStringAEvaluer);//passage de paramètre à js
    		try {
    			System.out.println(engine.eval("eval(str)"));//eval
    		} catch (ScriptException e) {
     
    			e.printStackTrace();
    		}
    Bon le principal problème de cette approche, c'est que eval peut renvoyer un objet de type Double ou Boolean en fonction du résultat.

    Il va falloir que tu fasses quelques tests.

    Si tu n'utilises pas Java 6 il te reste la possibilité d'utiliser Rhino, une API qui permet de faire la même chose.



    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut
    Bonjour et merci pour ta reponse.
    Je pourrais utiliser java6 mais d'après ce que tu me dit le resultat de eval peut etre du type Double ou booleen. Parles-tu bien de la méthode eval de engine ? Or je veux absolument que ca soit un booleen. Peux-tu m'en dire plus sur le sujet ?
    J'ai commencé à recherché de la doc sur Rhino mais il y a peu d'exemples en ligne. Si tu connais des pages d'exemples d'utilisation avec Java comme le bout de script que tu as écris, je suis aussi intéressé.
    Merci encore

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le type retourné dépendra de ton expression, comme pour tout système d'évaluation (que ce soit rhino, scriptengine, beanshell, ....). Si t'est certains que ton expression est de type Boolean, t'aura qu'à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Boolean)engine.eval(str);

Discussions similaires

  1. Evaluer le contenu d'une string
    Par CPT_Taverne dans le forum C++
    Réponses: 3
    Dernier message: 30/06/2010, 11h57
  2. Réponses: 12
    Dernier message: 13/06/2010, 23h19
  3. evaluer une chaine de String en commende avec vb.net
    Par souma86 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/03/2009, 08h29
  4. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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