Avatar billede bajerfar Nybegynder
27. oktober 2006 - 15:51 Der er 6 kommentarer og
1 løsning

Tusind indikator

Hej Eksperter
Jeg skal indsætte en tusind-indikator i et givent tal således at eksempelvis 12000 bliver til 12.000. Jeg har derfor brug for, at tælle tre tegn fra HØJRE mod VENSTRE og derefter indsætte et punktum. Jeg er med på at tallet, som i øvrigt er en STRING, skal deles efter tre tegn. Mit tal/string vil aldrig overstige 999.000, så der skal kun indsættes én indikator.

Håber I kan hjælpe mig med dette spørgsmål.
Avatar billede jhe-ting Nybegynder
27. oktober 2006 - 17:13 #1
<HTML>
<HEAD>
<TITLE></TITLE>
<script>
function opdel(tal){
    var ss = "";
    var ll = tal.length;
    var nn=0;
    for (var ii=ll-1; ii>=0; ii--) {
        ss = tal.substr(ii,1) + ss;
        if (++nn%3==0 && ii>0) ss = "," + ss;
    }
    return ss;
}
</script>
</HEAD>
<BODY>
Indtast tallet her<br />
<input type="text" value="0" onkeyup="res.value = opdel(this.value)" />
<br />
Resultatet ses her
<br />
<input type="text" id="res" value="0" onkeyup="res.value = opdel(this.value)" />

</BODY>
</HTML>
Avatar billede jhe-ting Nybegynder
27. oktober 2006 - 17:14 #2
Der er sikkert en ganske kort løsning mulig med regexp, som jeg kun kender lidt til.
Avatar billede roenving Novice
28. oktober 2006 - 00:21 #3
RegExps kan ikke tælle baglæns, så der skal files lidt på den, prøv denne, som så er ligeglad med hvor mange der skal indsættes, og i øvrigt også klarer decimal-tal !-)

<form>
100000<input type="checkbox" value="100000" onclick="this.form.tal.value=ins1000Sep(this.value);"><br>
1000000,15<input type="checkbox" value="1000000,15" onclick="this.form.tal.value=ins1000Sep(this.value);"><br>
Tal: <input type="text" name="tal"><br>
<button onclick="this.form.tal.value=rem1000Sep(this.form.tal.value);">Fjern tusind-separatorer</button>
<button onclick="this.form.tal.value=ins1000Sep(this.form.tal.value);">Indsæt tusind-separatorer</button>
</form>

<script type="text/javascript">
function ins1000Sep(val){
  val = val.split(",");
  val[0] = val[0].split("").reverse().join("");
  val[0] = val[0].replace(/(\d{3})/g,"$1.");
  val[0] = val[0].split("").reverse().join("");
  val[0] = val[0].indexOf(".")==0?val[0].substring(1):val[0];
  return val.join(",");
}
function rem1000Sep(val){
  return val.replace(/\./g,"");
}
</script>

-- desværre kan jeg ikke huske, hvem der præsenterede algoritmen, men den er i sin enkelhed genial !-)
Avatar billede bajerfar Nybegynder
30. oktober 2006 - 09:53 #4
Tak for hjælpen, drenge. Tror jeg napper roenvig's løsning. Den er helt perfekt.

Læg et svar :-)
Avatar billede roenving Novice
02. november 2006 - 17:29 #5
Velbekomme '-)
Avatar billede bajerfar Nybegynder
03. november 2006 - 09:16 #6
Vær så artig.
Avatar billede roenving Novice
03. november 2006 - 15:54 #7
-- og tak for point ;~}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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