Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-11-2003, 17:20   #1 (permalink)
olm604
Gast
 
Beiträge: n/a
stringinhalt auswerten?

hallo zusammen,

gibt es irgendeine möglichkeit den inhalt einer stringvariablen auswerten/berechnen zulassen? nehmen wir mal als einfachstes beispiel:

var aufgabe = "4+5";

mit eval() gehts ja leider nur unter JS, aber es muss doch auch ne möglichkeit unter AS geben

selbst wenn ich den string zerlege, bringt mich das nicht weiter, da auch der operator in eine variable geschrieben werden müsste:

var a = 4;
var b = 5;
var art = "+";

und das kann ich auch nicht auswerten.

ich dank euch schonmal

sommer, sonne, sonnenschein
der olm
  Mit Zitat antworten
Alt 07-11-2003, 17:39   #2 (permalink)
Neuer User
 
Registriert seit: Aug 2002
Beiträge: 238
naja, zerlegt hast du es ja, jetzt mach doch einfach eine Abfrage nach dem operator (ein switch/case oder if-Abfragen) in denen du dann rechnest... zwar nicht schön aber selten und funktioniert :-))
milhouse1978 ist offline   Mit Zitat antworten
Alt 07-11-2003, 17:48   #3 (permalink)
olm604
Gast
 
Beiträge: n/a
hi milhouse1978,

Zitat:
naja, zerlegt hast du es ja, jetzt mach doch einfach eine Abfrage nach dem operator (ein switch/case oder if-Abfragen) in denen du dann rechnest... zwar nicht schön aber selten und funktioniert :-))
soweit klar;-) aber ich will eigentlich einen therm mit unbekannter länge auswerten (z.b.: 5*4/3+2-1) und dabei falle ich IMO wieder in einen string zurück.

sommer, sonne, sonnenschein
der olm
  Mit Zitat antworten
Alt 07-11-2003, 18:21   #4 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
du musst den string in einen intreger mit int konvertieren.

bsp:
ActionScript:
  1. String.prototype.calculate = function() {
  2.     return int(this.split("+")[0])+int(this.split("+")[1]);
  3. };
  4. trace("4+5".calculate());
thorben.schmitt ist offline   Mit Zitat antworten
Alt 07-11-2003, 18:27   #5 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Ort: Stuttgart
Beiträge: 155
Mit allen Grundrechenarten

@thorben84: funktioniert ja nur mit + und 2 Summanden

Hier mal eine Funktion, die mit allen Grundrechenarten und beliebig vielen Produkten,Dividenden,Summanden und Subtrahenden klarkommt.

Ja. Ich weiss, ist kein schnuckeliger Prototyp.... Ist ja nur kurz davon entfernt und mit heisser Nadel gestrickt.

Und wo ist der Haken?? Klar gibts einen. Es werden keine Prioritäten berücksichtigt */ vor +-

Aber will ja nicht alles vorkauen ;-) . ist ja nur eine kleine Idee, wie man es lösen könnte.
ActionScript:
  1. aufgabe = "5*4/3+2";
  2. Collector = new Array();
  3. Counter = 0;
  4. for (i=0; i<aufgabe.length; i++) {
  5.     Buffer = aufgabe.substring(i, i+1);
  6.     if (Buffer == '+' || Buffer == '-' || Buffer == '/' || Buffer == '*') {
  7.         Collector[Counter] = Number(Zahl);
  8.         Counter++;
  9.         Collector[Counter] = Buffer;
  10.         Counter++;
  11.         Zahl = "";
  12.     } else {
  13.         Zahl += Buffer;
  14.     }
  15. }
  16. Collector[Counter] = Number(Zahl);
  17. Summary = Collector[0];
  18. for (i=1; i<Collector.length; i=i+2) {
  19.     switch (Collector[i]) {
  20.     case '+' :
  21.         Summary += Collector[i+1];
  22.         break;
  23.     case '-' :
  24.         Summary -= Collector[i+1];
  25.         break;
  26.     case '/' :
  27.         Summary /= Collector[i+1];
  28.         break;
  29.     case '*' :
  30.         Summary *= Collector[i+1];
  31.         break;
  32.     default :
  33.         trace("Error");
  34.         break;
  35.     }
  36. }
  37. trace("Das Ergebnis ist: "+Summary);

Geändert von nanodesigner (07-11-2003 um 18:33 Uhr)
nanodesigner ist offline   Mit Zitat antworten
Alt 07-11-2003, 18:42   #6 (permalink)
olm604
Gast
 
Beiträge: n/a
Re: Mit allen Grundrechenarten

hi nanodesigner
Zitat:
Und wo ist der Haken?? Klar gibts einen. Es werden keine Prioritäten berücksichtigt */ vor +-

Aber will ja nicht alles vorkauen ;-) . ist ja nur eine kleine Idee, wie man es lösen könnte.
thx aber ich werd mir dann wohl demnächst mal die zeit nehmen müssen, um sowas komplett durchzuprogrammieren. und als zulässige zeichen soll es dann 0-9 +-*/() geben. jetzt werd ich erstmal ne minimalvariante mit nur 2 operanden machen. echt schade das es von der funktionsweise her kein JS-eval()-pendant in AS gibt
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele