HighDots Forums  

Mit gesplitteten String rechnen

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Mit gesplitteten String rechnen in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Stefan Becker
 
Posts: n/a

Default Mit gesplitteten String rechnen - 11-30-2007 , 02:52 PM






Hallo,

folgende Teilfunktion:

var Fuehrer_Mann = anzeige.split("/");
alert(Fuehrer_Mann[0]);
var tmp = Fuehrer_Mann[0];
Fuehrer_Mann[0] = tmp+1;
alert(Fuehrer_Mann[0]);

Der Ausgangstring liegt in der Form 1/8 vor. Leider bekomme als Ergebnis
11 raus... wie kann ich den String zum Rechnen bekommen?
--
MfG

Stefan Becker


Reply With Quote
  #2  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 11-30-2007 , 03:08 PM






Markus Bemmelen wrote:
Quote:
Stefan Becker schrieb:
Fuehrer_Mann[0] = tmp+1;

Probier mal:
Fuehrer_Mann[0] = parseInt(tmp)+1;
Probier mal z.B. parseInt("042") und parseInt("049").

Merke: Bei parseInt() besser immer die Basis angeben:

Fuehrer_Mann[0] = parseInt(tmp, 10) + 1;

Quote:
oder:

Fuehrer_Mann[0] = (tmp*1)+1;
Fuehrer_Mann[0] = +tmp + 1;

Da `Fuehrer_Mann' kein Konstruktor ist, sollte es `fuehrer_Mann' heissen.


PointedEars


Reply With Quote
  #3  
Old   
Arnd Ißler
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-03-2007 , 10:04 AM



Quote:
[Problem]
Man möge mir verzeihen falls ich falsch liegen sollte, aber IMHO kannst
Du eval() benutzen.

Grüße,
arnd.


Reply With Quote
  #4  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-03-2007 , 01:37 PM



Arnd Ißler wrote:
Quote:
[Problem]
Du kannst so wunderbar zitieren. Wo hast du es gelernt? [dsf 7.13]

Quote:
Man möge mir verzeihen falls ich falsch liegen sollte, aber IMHO kannst
Du eval() benutzen.
Das ist mit Abstand die schlechteste aller vorgeschlagenen Lösungen.
Schmerzlichen Glühpunsch zum diesmonatigen CUoe -- Clueless Use of
eval() -- Award.


PointedEars
--
Nimm VerBrecherSCRIPT, denn das ist kein JavaScript-Objekt, wird also bei
keinem vernünftigen Browser geschweige denn auf einer vernünftigen Plattform
funktionieren, so daß Du auch [...] gleich mit VBSCRIPT arbeiten kannst und
dies auch tun solltest. --Georg Maaß <ao3k78$ije4r$3 (AT) ID-3551 (DOT) news.dfncis.de>


Reply With Quote
  #5  
Old   
Arnd Ißler
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-10-2007 , 09:14 AM



Thomas 'PointedEars' Lahn schrieb:
Quote:
Arnd Ißler wrote:
Man möge mir verzeihen falls ich falsch liegen sollte, aber IMHO kannst
Du eval() benutzen.

Das ist mit Abstand die schlechteste aller vorgeschlagenen Lösungen.
Schmerzlichen Glühpunsch zum diesmonatigen CUoe -- Clueless Use of
eval() -- Award.
Das ist nett von Dir, ich nehme den Preis gerne entgegen. Soll ich bis
zur Preisverleihung selber versuchen rauszufinden, wieso ich "eval" an
dieser Stelle nicht benutzen sollte oder möchtest Du es mir und dem
geneigten Leser vielleicht verraten?

Vielleicht weil eval() als Parameter auch ein komplettes Programm
entgegen nehmen kann? Das kannst Du ja abfangen, in dem Du die
verwendeten Eingaben prüfst, ob sie eine numerische Angabe sind oder nicht.

Grüße,
a.


Reply With Quote
  #6  
Old   
J. Strübig
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-10-2007 , 10:04 AM



Arnd Ißler schrieb:
Quote:
Das ist nett von Dir, ich nehme den Preis gerne entgegen. Soll ich bis
zur Preisverleihung selber versuchen rauszufinden, wieso ich "eval" an
dieser Stelle nicht benutzen sollte oder möchtest Du es mir und dem
geneigten Leser vielleicht verraten?
Oder andersrum, verrate uns wieso man hier eval benutzen sollte?

Struppi.


Reply With Quote
  #7  
Old   
Arnd Ißler
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-10-2007 , 10:51 AM



Quote:
Nope. Weil eval() schlichtweg Overkill sondersgleichen ist, wenn ich
einen String in eine Zahl umwandeln will.
Ich will nicht eine einzelne Zahl umwandeln, sondern Strings mit dem zu
berechnenden Inhalt auswerten, also beispielsweise eval("1+1"). Den
String kann sich der OP ja leicht selber zusammenbauen.

Dass man ein prüfendes Konstrukt davorschalten kann ist lediglich als
Ansatz gedacht, wenn man nicht ausschließen kann, dass durch den
zusammengebauten String ein lauffähighes JavaScript-Programm als
Argument zu eval wird.

Wenn Du sicherstellen kannst, dass Du nur einen Audruck mit Zahlen
übergeben kannst/wirst, dann kannst Du auf die Prüfungen verzichten und
direkt das Ergebnis berechnen lassen. Wenn die Berechnung ungültig ist,
weil Du beispielsweise eval("Äpfel+Birnen") berechnest schmeisst eval
eine Exception, die man ja wohl abfangen kann.

Grüße,
a.


Reply With Quote
  #8  
Old   
Arnd Ißler
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-10-2007 , 10:51 AM



J. Strübig schrieb:
Quote:
Arnd Ißler schrieb:
Soll ich bis zur Preisverleihung selber versuchen rauszufinden,
wieso ich "eval" an dieser Stelle nicht benutzen sollte oder
möchtest Du es mir und dem geneigten Leser vielleicht verraten?

Oder andersrum, verrate uns wieso man hier eval benutzen sollte?
Gerne. Weil man damit einfach Berechnungen auswerten lassen kann.

Grüße,
a.


Reply With Quote
  #9  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-10-2007 , 04:13 PM



Arnd Ißler wrote:
Quote:
Nope. Weil eval() schlichtweg Overkill sondersgleichen ist, wenn ich
einen String in eine Zahl umwandeln will.

Ich will nicht eine einzelne Zahl umwandeln, sondern Strings mit dem zu
berechnenden Inhalt auswerten, also beispielsweise eval("1+1").
Was Du willst, ist nicht notwendigerweise das, was der OP will. eval()
ist allenfalls für ein reines Taschenrechner-Formular oder die Kapselung
von Code mit nicht universell unterstützten Schlüsselwörtern sinnvoll bzw.
notwendig.

Quote:
Den String kann sich der OP ja leicht selber zusammenbauen.
Und der Benutzer kann mit eval() eben jeden beliebigen Ausdruck übergeben.

man 'Code Injection'

Quote:
Dass man ein prüfendes Konstrukt davorschalten kann ist lediglich als
Ansatz gedacht, wenn man nicht ausschließen kann, dass durch den
zusammengebauten String ein lauffähighes JavaScript-Programm als Argument
zu eval wird.
Das Argument von eval() wird *immer* als JavaScript-Programm geparst (ES3
Final, 15.1.2.1). Deshalb setzt man eval() im Produktumgebungen nur dann
ein, wenn man die Eingabequelle genau kennt -- etwa ein eigenes
serverseitiges Script, welches JSON-Daten liefert. In diesem Fall ist
eval() anscheinend fehlerträchtiger Overkill.

Quote:
Wenn Du sicherstellen kannst, dass Du nur einen Audruck mit Zahlen
übergeben kannst/wirst,
Das lässt sich bei Benutzereingaben nicht sicherstellen.

Quote:
dann kannst Du auf die Prüfungen verzichten und direkt das Ergebnis
berechnen lassen. Wenn die Berechnung ungültig ist, weil Du beispielsweise
eval("Äpfel+Birnen") berechnest schmeisst eval eine Exception, die man ja
wohl abfangen kann.
Falsch.

Erstens ist `Äpfel+Birnen' seit ECMAScript Edition 3 syntaktisch korrekt;
Unicode-Glyphen sind in Bezeichnern erlaubt (ES3 Final, Anhang A.1). Die
Frage ist dann nur, ob die Bezeichner aufgelöst werden können. Ist das
nicht möglich, weil kein Objekt in der Scope Chain diese Eigenschaften hat,
wird eine ReferenceError-Exception geworfen (ES3 Final, 8.7.1).

Zweitens ist Exception-Handling nicht in jeder Laufzeitumgebung verfügbar:

http://PointedEars.de/scripts/es-matrix#try


Bitte entferne nicht die Einleitungszeile, die Dein Thunderbird vor das
Zitat setzt, um den Urheber des Textes zu kennzeichnen:

http://lernst.de/zitieren/kriegst.de/antworten


PointedEars


Reply With Quote
  #10  
Old   
J. Strübig
 
Posts: n/a

Default Re: Mit gesplitteten String rechnen - 12-11-2007 , 04:18 AM



Arnd Ißler schrieb:
Quote:
J. Strübig schrieb:
Arnd Ißler schrieb:
Soll ich bis zur Preisverleihung selber versuchen rauszufinden,
wieso ich "eval" an dieser Stelle nicht benutzen sollte oder
möchtest Du es mir und dem geneigten Leser vielleicht verraten?
Oder andersrum, verrate uns wieso man hier eval benutzen sollte?

Gerne. Weil man damit einfach Berechnungen auswerten lassen kann.
Gut - aber wo ist in diesem Fall die Berechnung, die du mit eval
auswerten musst?

Struppi.


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.