2011-04-30 4 views
10

Existe-t-il un moyen facile d'évaluer les chaînes comme "(4+8)*2" Pour obtenir la valeur int de 24?Évaluation de la chaîne C# avec les opérateurs mathématiques

Ou y a-t-il beaucoup de travail à faire pour y arriver ...?

+1

Vous pouvez consulter: [L'évaluateur d'expression revisitée (fonction Eval dans .NET géré à 100%)] (http://www.codeproject.com/KB/recipes/eval3.aspx) –

Répondre

31

Quelqu'un d'autre a ajouté ceci et il a été supprimé. Je pensais que c'était plutôt cool parce qu'aucune bibliothèque tierce n'était requise.

class Program 
    { 

     static void Main(string[] args) 
     { 
      Console.WriteLine(Evaluate("(4+8)*2")); 
      Console.ReadKey(); 
     } 

     public static double Evaluate(string expression) 
     { 
      DataTable table = new DataTable(); 
      table.Columns.Add("expression", typeof(string), expression); 
      DataRow row = table.NewRow(); 
      table.Rows.Add(row); 
      return double.Parse((string)row["expression"]); 
     } 

    } 
+0

En A mon usage, cette solution était environ 1.5x plus rapide que NCalc, tout en étant également stable (au moins pour ce que je faisais). Il a manipulé des expressions booléennes tout comme NCalc. Cela devrait être annoncé plus. – tootsiejasmine

+0

Cela ne gère pas les pouvoirs ou les racines carrées. – seekerOfKnowledge

+0

cette solution est parfaite pour les expressions simples comme j'en ai besoin. Merci de l'avoir posté de nouveau. – zreptil

Questions connexes