10000 zu 10.000 Konvertieren

Hawkster

Erfahrenes Mitglied
Hi all,

hab ein problem.

ich möchte z.b. die variable zahl die den inhalt "10000" hat in 10.000 konvertieren.

Weis jemand wie ich das am besten mache

MFG Hawkster
 
Hallo, das Poblem hatte ich auch schon. Habe dazu früher mal eine Funktion geschrieben, die eine Zahl als Parameter annimmt und diese Zahl dann mit Dezimalentrennern ausgibt. Wobei ich diese Funktion für eine englisch-sprachige Seite brauchte und im Englischen Sprachraum unser 10.000,148 dort 10,000.148 geschrieben wird (es ist also die Bedutung von Komma ' , ' und Punkt ' . ' genau vertauscht). Du müsstest also immer mit JavaScript in meiner Funktion per replace() Komma durch Punkt und Punkt durch Komma vertauschen.

Wie auch immer hier die Funktion. Würde sie heute wahrscheinlich eleganter schreiben aber sie tut ihren Dienst:
HTML:
<html><head><title>Untitled-1</title>
 
 <script type="text/javascript"><!--
   function decdiv(nbr) {
 	if (isNaN(nbr) ) {
 	  return 'NaN';
 	} else {
 	  nbr = String(Number(nbr));
 	  beforedec = (nbr.indexOf('.') == -1) 
 		? nbr 
 		: nbr.substring(0,nbr.indexOf('.'));
 	  afterdec = (nbr.indexOf('.') == -1) 
 		? '' 
 		: '.' + nbr.substring(nbr.indexOf('.')+1,nbr.length);
 	  beforedec = 
 		beforedec.substring(0,beforedec.length%3) + 
 		beforedec.substring(beforedec.length%3,beforedec.length).replace(/(...)/g,',$1');
 	  return (beforedec + afterdec).replace(/^,/,'');
 	}
  }
 //--></script>
 
 
 </head><body>
 
   <input type="text" id="ich" />
   <input type="button" value="Go!" onClick="alert(decdiv(document.getElementById('ich').value))" />
   
 </body></html>
 
Zuletzt bearbeitet:
Problem wäre zwar damit gelöst, aber es geht doch sicher auch mit einer einzigen Anweisung.

Preisfrage an alle:

Es müsste doch eigentlich einen Reglulären Ausdruck geben, der in eine repalce()-Anweidung gepackt und mit Rückrefernezierung dann das gleiche macht wie meine Funktion, oder?

Mal ein Ansatz für die Replace-Anweisung: Die Zeichenkette wird eingeleitet durch 0-, 1- oder 2-maliges vorkommen einer Zahl. Darauf folgen beliebig oft dreier-Kombinationen aus beliebigen Zahlen bis ein Punkt kommt. Auf diesen Punkt folgen dann beliebig viele Zahlen (die Dezimalstellen). Ersetzt soll das ganze werden die 0/1/2 mal vorkommende Zahl/Zahlen auf die ein Komma folgt dann in der Reihnfolge ihres auftretens in der Zeichkette die einzelnen dreier-Kombinationen getrennt durch ein Komma, dann der Punkt und dann die Dezimalstellen. Eventuell wird dann wenn am Anfang 0 Zahlen vorgekommen sind ein Komma zuviel gemacht. Das kann man aber durch replace(/^,/,'') korrigieren.

Leider ist mir das zu hoch, weil regüläre Ausdrücke schon immer ein Buch mit sieben Siegel für mich waren. Es ist mir z.B. schleierhaft, wie man den Mittelteil mit den dreier-Kombinationen genau bewerkstelligt, so dass er rückrefferenzierbar ist. Und auch, wie man das mit 0/1/2-Maligen vorkommen macht weil die geschweiften Klammern ( { und } ) ja kein 0 kennen.
Zu einfachen Sachen bin ich bei RegEx durchaus fähig und das auch ziemlich schnell nur auf die komplizierteren Sachen komm ich nie selbst, die muss man mir immer vorkauen. Wenn ich sie dann sehe versteh ich sie. Also falls das einer hinbekommt hat er meinen fetten Respekt.
 
Zuletzt bearbeitet:
Fürs Archiv ;) :)

Code:
<script type="text/javascript">
<!--
function funktion(zahl)
{
while(zahl.match(/^(\d+)(\d{3}\b)/))
    {
    zahl=zahl.replace(/^(\d+)(\d{3}\b)/,RegExp.$1+'.'+RegExp.$2);
    }
return(zahl);
}
//-->
</script>

Funktioniert auch mit 2 Nachkommastellen:)
Was gibts als Gewinn?
 
Hehe, danke Sven, you really kick ass!

Wieso sollte es nicht mit zwei Nachkommastellen funktionieren? Versteh ich nicht!

Egal, Gewinn gibts keinen, weil es ja nur eine Anweisung sein sollte (du hast replace, match und die Schleife) - wäre für mich auch einfach aus lerntechnischen Gründen schöner gewesen.
Egal, auf die Idee das in ne Schleife zu packen wäre ich nie gekommen und was '\b' bedeutet wusste ich auch nicht (hab mein Wissen über RegExp nur aus SELFHTML und da steht nüscht von drünn aber inzwischen weiß ich's). Insofern hab ich dabei auch schon ne Menge gelernt.

Als Trostpreis gibt's den Tietel RegExpert.
 
ich sehe nur eine Anweisung....ersetze solange du etwas findest:)

Schleife!=Anweisung
Bedingung!=Anweisung
Ersetzen==Anweisung
 
Zurück