Faire des maths en vb.net comme Eval en javascript
Est-il un moyen d'analyser une chaîne de caractères dans vb.net (comme, construit dans les méthodes), qui peut faire des maths comme Eval? Par exemple, 3+(7/3.5) comme une chaîne de retour 2.
Je ne demande pas pour vous ce code pour moi, je veux juste savoir si il y a un construit en façon de le faire, si il n'y a pas de je code moi-même.
Je peux parier qu'il ne serait pas en mesure d'analyser des trucs comme Sin(90) sur son propre, et je comprends que devra être remplacé par les Mathématiques.Sin(90).
Si il y a une construite dans la méthode, comment l'utilisez-vous?
Je n'ai pas de réponse. Je ne crois pas qu'il existe toute sorte de l'analyseur de ce genre .NET de la langue (sauf si vous faites ce que Preet suggéré). Si vous finissez par la création d'un analyseur découvrez ANTLR.
Probablement va à la main le code moi-même un analyseur à ce stade, il n'est pas difficile pour les mathématiques de base. La parenthèse chose peut obtenir un peu délicate tho....
Pour les parenthèses, vous pouvez utiliser la récursivité.
Probablement va à la main le code moi-même un analyseur à ce stade, il n'est pas difficile pour les mathématiques de base. La parenthèse chose peut obtenir un peu délicate tho....
Pour les parenthèses, vous pouvez utiliser la récursivité.
OriginalL'auteur Cyclone | 2009-09-20
Vous devez vous connecter pour publier un commentaire.
Il y a un raccourci pour une utilisation limitée (ie. simple) des expressions mathématiques en utilisant le DataTable.Méthode de calcul. Évidemment, ce n'est pas robuste (fonctionnalité limitée) et se sent hackish à la mauvaise utilisation de la Table de données à cette fin, mais j'ai pensé que je voudrais ajouter à l'actuel réponses.
Exemple:
"Sin(90)" ne fonctionne pas avec cette approche. Reportez-vous à la DataColumn.L'Expression de la Propriété page pour une liste des fonctions prises en charge, plus particulièrement dans les "Agrégats".
L'utilisation du Système.CodeDom espace de noms est une option.
Quelques liens utiles:
EDIT: à l'adresse de votre commentaire, ici est une approche pour démontrer le remplacement de fonctions trigonométriques avec leurs équivalents méthodes de la classe Math.
C#
VB.NET
Noter, cependant, que vous avez besoin de connaître le contenu de la "arg" du groupe. Je sais qu'ils sont entiers, alors j'ai utilisé Int32.Analyser sur eux. Si ils sont une combinaison d'éléments, ce simple approche ne fonctionnera pas. Je soupçonne que vous devez constamment band-aid la solution si elle devient trop compliqué avec plus de non prise en charge des appels de fonction, cas dans lequel le CodeDom approche ou d'autres peut-être plus adapté.
C'est génial. Merci!
OriginalL'auteur Ahmad Mageed
Ici est une façon d'évaluer une expression que je n'ai pas vu mentionné nulle part ailleurs: l'utilisation d'un
WebBrowser
de contrôle et de JavaScripteval()
:OriginalL'auteur Andy G
Ce CodeProject article peut faire l'affaire:
Un évaluateur d'expression écrite dans VB.NET
http://www.codeproject.com/KB/vb/expression_evaluator.aspx
Il y a aussi ceci:
http://www.dotnetspider.com/resources/2518-mathematical-expression-expression-evaluate-VB.aspx
Ce qui sur le deuxième lien? En fait, il utilise Javascript pour faire le travail pour vous.
Viens de voir ce lien il y, de mal l'utiliser que si mon parseur personnalisé ne peut pas gérer le travail. Je pense que je vais essayer d'abord à ce point, ça serait une bonne expérience d'apprentissage pour moi, comme je suis encore nouveau pour vb.
OK. Bonne chance avec elle.
Oh, ma chère, Robert. Oh chers.
OriginalL'auteur Robert Harvey
Je ne sais pas à propos de VB.net construit en, mais nous faire des trucs comme ça en liaison de la IronPython d'exécution et de transmettre les expressions. C'est de façon plus rapide que l'utilisation de la réflexion.
lmgtfy.com/?q=ironpython
J'ai déjà googlé >.>
Toutes mes excuses. J'ai interprété "Hein?" que "IronPython?" si vous aviez l'intention de ces deux lettres et un point d'interrogation à une question plus spécifique. Puisque vous savez déjà ce que IronPython est, vous le savez aussi que c'est un langage dynamique (comme JavaScript) qui permet d'évaluer des expressions (comme JavaScript). Vous devez également savoir qu'il s'exécute sur l' .NET framework. Ce Preet de la Sangha a été suggérant que vous pourriez faire une simple IronPython bibliothèque pour évaluer des expressions mathématiques, et de l'appeler à partir de votre VB.NET code.
"Hein?" au moment de l'interrogatoire doit avoir été interprété comme "Ce qui est IronPython?", comme vous l'avez supposé, mais par le temps que vous avez posté le lien qui explique comment google, je l'avais déjà fait mais avait négligé de remarquer sur ce fait. Veuillez pardonner ma faute car je suis malade maintenant et vous avez oublié de vérifier le droit de la question après que j'ai fini, dit googler.
OriginalL'auteur Preet Sangha
Un autre moyen serait d'utiliser le CodeDom espace de noms pour le compiler et de l'exécuter à l'aide de la réflexion. Peuvent ne pas être performant, je ne sais pas.
Reportez-vous à CodeDom Calculatrice Ahmad réponse.
OriginalL'auteur Malcolm
C'est un peu tard, mais ici, c'est exactement ce que tu voulais (assurez-vous que vous analysez l'entrée pour s'assurer il n'y a pas d'énoncé comme " quelque chose de + vbcrlf + exec "format c:""):
Utilisation:
Catégorie:
OriginalL'auteur Stefan Steiger