Avatar billede mr.gessle Nybegynder
11. september 2002 - 19:36 Der er 6 kommentarer

Konvertering af streng til integer

Jeg har en funktion, som skal tage imod et array fyldt med priser i formatet 2.395,00.
Funktionen skal nu konvertere alle priser i arrayet til integer og fjerne punktummet og kommaet. Er her nogen som hurtig kan krejle den?
/mr.gessle.
Avatar billede mr.gessle Nybegynder
11. september 2002 - 19:42 #1
Mit bud ser sådan ud, men er det ikke sikker på, at den holder i alle situationer:

function konverterPriser(priser)
{
 
  var nyStreng = "";
  for(i=2; i<priser.length; i=i+5)
  {
    var currentPris = priser[i];
   
    for(j=0; j<currentPris.length; j=j+1)
    {
      var gemKomma;
      var gemPunktum;
      var nyStreng;
      //find og fjern komma
      if(currentPris.charAt(j)==".")
      {
        //gemmer position
        gemKomma = j;
           
      }
   
    if(currentPris.charAt(j)==",")
    {
      //gemmer punktum
      gemPunktum = j;
    }
   
      nyStreng = currentPris(0, gemKomma-1) + currentPris(gemKomma + 1, gemPunktum);
    }
  }

return nyStreng;
}
Avatar billede mr.gessle Nybegynder
11. september 2002 - 19:52 #2
Der skulle selvfølgelig tilføjes en substring efter currentpris linien til sidst... Og det lort virker slet ikke...
Avatar billede jakoba Nybegynder
11. september 2002 - 21:03 #3
det gør den nok ikke.  tal over en million har jo 2 . (punktummer) som tusindseparator.

men hvis vi kan STOLE på at . bruges som tusindseparator kan vi blot fjerne alle punktummer med
    var tempStreng = currentPris.replace( /\./g, "" );
og igen hvis vi kan STOLE på at der altid står et komma med 2 cifre efter kommaet kan vi fjerne det komma med
    tempStreng = tempStreng.replace( /,/, "" );
    nyStreng = tempStreng;

function konverterPriser(priser)
{

  var nyStreng = "";
  for(i=2; i<priser.length; i=i+5)
  {
 
    var tempStreng = priser[i].replace( /\./g, "" );
    var nyStreng = tempStreng.replace( /,/, "" );
       
    priser[i] = nyStreng; // hvis vi ikke gemmer resultatet et sted
                          //kan vi ligesågodt lade være at kalde funktionen
  }

  return priser;  // det giever ikke mening at returnere nyStreng
                  //for det er blot den sidste i dit array
}

mvh JakobA
Avatar billede Slettet bruger
12. september 2002 - 17:33 #4
Er det ikke nærmere:

function konverter(tal) {
tal.replace(/\./g, "");
tal.replace(/,/, ".");
return parseFloat(tal);
}

Funktionen returnerer et kommatal, så fx 12.345,67 bliver returneret som 12345.67, så JavaScript kan regne med det!
Avatar billede Slettet bruger
12. september 2002 - 17:34 #5
Hvis du absolut vil have et heltal, kan du bare skifte parseFloat ud med parseInt.
Avatar billede Slettet bruger
12. september 2002 - 17:35 #6
For at konvertere et helt array bliver det noget lignende:

function k_array(arr) {
for (i = 0; i < arr.length; i++)
arr[i] = konverter(arr[i]);
return arr;
}

Forudsat at du også bruger min anden funktion.
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