Bedre StandardSend faginnspill

Fjern tusenskilletegn uten å fjerne desimalene

Mellomrom, punktum og komma kan ha forskjellige roller i tallteksten.

I denne veiledningen

Tusenskilletegn gjør et beløp lettere å lese, men kan forvirre importen. Et tegn må ikke fjernes før dere vet om det grupperer tusener eller skiller desimaler. Samme tegn kan ha forskjellig rolle i forskjellige kilder.

Mellomrom kan også være ulike Unicode-tegn, for eksempel vanlig mellomrom eller hardt mellomrom. En normalisering som bare kjenner tastaturets vanlige mellomrom, kan derfor behandle visuelt like beløp forskjellig.

Bevar desimalene gjennom normalisering

Dette syntetiske eksemplet bruker en kildeavtale der mellomrom grupperer tusener og komma angir desimaler.

RåtekstKontrollert normaliseringTolket beløp
12 345,67Fjern grupperende mellomrom12 345,67
12345,67Ingen grupperende tegn12 345,67
12.345,67Punktum ikke avtalt i denne kildenAvklar eller avvis
12 345,67 → alle tegn fjernet1234567Feil: 1 234 567

Den siste transformasjonen mister desimalene og gjør beløpet hundre ganger større. At parseren får et rent tall, er altså ikke et godkjenningskriterium.

Normaliser med en feltregel

Beskriv tillatte tegn og deres rolle for akkurat dette beløpsfeltet. Hvis flere eksportkilder brukes, bør hver kilde ha kjent format. En sammenslått fil med blandet norsk og internasjonal tallvisning bør ikke behandles med én tilfeldig erstatning.

Prøv også negative tall og verdier med mellomrom rundt feltet. Innledende eller avsluttende blanktegn kan være visningsstøy, mens mellomrom inne i en identifikator kan ha en annen betydning. Bruk derfor ikke beløpsregelen på alle tekstkolonner.

  • Bevar råteksten ved siden av tolket verdi i prøven.
  • Test hardt mellomrom og vanlig mellomrom.
  • Kontroller at desimalpresisjonen beholdes.
  • Avvis tvetydige formatblandinger.
  • Sammenlign både enkelttall og samlet sum.

Når kilden er uavklart

Be om en ny eksport med dokumentert tallformat eller få kildeleverandøren til å bekrefte konvensjonen. Ikke bruk beløpets størrelse som fasit; både 12,345 og 12 345 kan være plausible verdier i forskjellige sammenhenger.

JSON har en definert tallsyntaks uten visningsbaserte tusenskilletegn. Ved omforming fra CSV til JSON skal tallteksten først tolkes korrekt, og deretter serialiseres i det nye formatet. En tekststreng med grupperende tegn blir ikke et gyldig JSON-tall ved å skifte filendelsen.

Les desimaltegn og kildespor.

En nyttig grensetest er beløpet 1 000 uten desimaler og beløpet 1,000 i en annen dokumentert kilde. Den første kan være tusen, den andre én med tre desimaler. Hold kildene atskilt i prøven slik at samme tegnmønster ikke får en global betydning uten grunnlag.

Kilder