Jvascript String umwandeln in "brauchbare" Formel

OP #4942996
Lesenswert?
• ▲
▼
Hallo,

ich habe in Javascript einen String, welcher etwa "so" ausschaut:

"( [length] * [width] ) * [weight]"
ODER
"( [length] * [width] ) - [flaeche2]"
...

das sind divere "formeln" welche in einer Datenbank abgespeichert 
werden, welche dan später für die "berechnung" gebraucht werden...

die werte in den "eckigen" klammern sind variablen... so steht hinter

eval( "length" )

eine länge...

die "anfänge" sind die einfachen Mathe operatoren
+-*/ klammern

Später denke ich auch über Exponentialfunktionen, Wurzeln... nach

die 1. Frage wäre, ist es "so" intelligent die Formel abzuspeichern?
die 2. (wichtigere Frage), WIE mach ich die Formel jetzt nutzbar?

vielen Dank für jeden Tipp


da bin ich mit einem Kopf hinterm Brett rumgelaufen...:
eval ist ja schon die lösung ... vergesst die frage...
#4943015
Lesenswert?
• ▲
▼
Hi

Woher kommen die Werte, Die Du mit dann an eval verfütterst?

Dir ist bekannt, daß man NIE eine Benutzereingabe an eval übergibt, da 
so ein unbekannter Code von Dir/Deinem Programm ausgeführt wird.

Mit eval kann man viel machen, die Schutzmaßnahmen, Die man treffen muß, 
stehen aber in keinem Verhältnis.

MfG
Gast #4943417
Lesenswert?
• ▲
▼
Der umständliche Weg "nach Lehrbuch":

Du schreibst dir eine Grammatik für deine Ausdrücke, und lässt einen 
Parser-Generator darauf los (für JS z.b. https://pegjs.org/)

Auch halbwegs nach Lehrbuch, weniger Fremdcode, mehr eigener: Recursive 
Descend parser runtertippen. "Scanner-Teil" durch Regexp ersetzten.


Heute aktueller Weg: Youtube-Video zum Thema anschauen, fertiges npm 
modul einbinden. :/
Gast #4943426
Lesenswert?
• ▲
▼
Frindal schrieb:
> Ist das nicht bereits in JavaScript eingebaut?
>
> https://www.w3schools.com/jsref/jsref_eval.asp

Nur im Browser-Javascript. Ist da unproblematisch(er), weil der Browser 
sowieso alles sandboxed, und der "böse" Code entweder vom Server oder 
vom User kommt, welche beide auch ohne "eval" mehr Rechte haben.

Unter nodejs wäre das Äquivalent "vm.Script"&co., wobei ich mir nicht 
sicher bin, ob man dem wirklich untrusted Code anvertrauen kann...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.