Avatar billede aey Nybegynder
17. maj 2002 - 19:11 Der er 1 løsning

formatering af tal med punktum for hver gange tusind

Jeg ønsker inspiration til en javascript funktion, der kan formatere et tal (streng) fra ene cifre til cifre adskildt med punktum efter hvert 3. Tallet kan variere i længde!

eks. 100000000 -> 100.000.000

jeg har lavet følgende regexp til at teste om tallet/strengen allerede er korekt formatret:
/(^[0-9]{1,3}(\.[0-9]{3})*(\.[0-9]{3})$)/ig

jeg har først tænkt på at bruge $1 ... $9, men det er ikke fedt, jeg ved ikke umiddelbart hvor langt tallet er og så er der jo kun mulighed for et mindre en 999.999.999.999.999.999.999.999.999 ;)
Avatar billede limemedia Nybegynder
18. maj 2002 - 04:12 #1
Jeg har lavet en lidt "quick'n'dirty" implementation - det skal forstås at den ikke er helt optimeret endnu, men den virker.

<script language="JavaScript" type="text/javascript">
<!--
    function formatInt (int) {
        var separator = " ";
        var delimitor = ".";
        var komma = ",";

        var subnum = "";
        var kommapos = int.indexOf(komma);

        if (kommapos != -1) {
            subnum = int.substr(kommapos);
            int = int.substr(0,kommapos);
        }
       
        int = int.replace (new RegExp(separator, "g"), "");
        var regexp = new RegExp("\\B(\\d{3})( |$)");
        while (int.search(regexp) >= 0) {
            int = int.replace(regexp, separator+"$1");
        }
   
        while (int.search(" ") >= 0) int = int.replace(" ", delimitor);
        return int+subnum;
    }

    document.write(formatInt("1234567890")+"<br>");
    document.write(formatInt("123456789,0")+"<br>");
    document.write(formatInt("12345678,90")+"<br>");
    document.write(formatInt("1234567,890")+"<br>");
    document.write(formatInt("123456,7890")+"<br>");
    document.write(formatInt("12345,67890")+"<br>");
    document.write(formatInt("1234,567890")+"<br>");
    document.write(formatInt("123,4567890")+"<br>");
    document.write(formatInt("12,34567890")+"<br>");
    document.write(formatInt("1,234567890")+"<br>");
//-->
</script>


jeg har opbygget scriptet med en regexp som ønsket, men ville i realiteten nok hellere lave det med et loop og et modulus check. Det er op til dig.

/ Lars
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester