Avatar billede jaffafo Nybegynder
28. oktober 2005 - 16:49 Der er 15 kommentarer og
1 løsning

Manipulere en streng.

Hej

Jeg har en string som skal manipuleres. Det er et tal, men er så ligegyldigt her :)

eksempel:

dim streng as string = "46388392"

Det jeg gerne vil have frem på skærmen er:

"46.388.000"

Med andre ord. De 3 sidste tal skal erstattes med 0'er og for hver 3 tal FRA HØJRE skal der indsættes et punktum. Jeg kunne godt tænke mig en løsning der virker på både string OG integer :)

mvh

ps: i vb.net helst ;)
Avatar billede arne_v Ekspert
28. oktober 2005 - 16:54 #1
jeg ville udnytte at det var et tal og bruge:

Dim s2 As String = Int32.Parse(s).ToString("0,000")
Avatar billede jaffafo Nybegynder
28. oktober 2005 - 17:16 #2
Takker det gav lige præcis det punktum jeg eftersøgte :)

Har du en løsning til det med at de tre sidste cifre skal laves om til 000?
Avatar billede jaffafo Nybegynder
28. oktober 2005 - 17:47 #3
sidespørgsmål:

Denne kode:
If len(a) > 3 then
    response.write(len(a) & " " & a & " , ")
    Return Int32.Parse(a).ToString("0,000")
else
    return a
end if

Giver:

4 756 , 4 1702 , 4 1723 , 4 1522 , 4 1683 , 4 4013 , 4 2232 , 4 3089 , 4 2907 , 4 5114 , 4 2486 ,

Som man kan se er det første tal "756" kun 3 cifre..  hvorfor giver det så 4? :/
Avatar billede arne_v Ekspert
28. oktober 2005 - 18:08 #4
Dim s3 As String = ((Int32.Parse(s)\1000)*1000).ToString("0,000")
Avatar billede arne_v Ekspert
28. oktober 2005 - 18:09 #5
er der ikke et mellemrum eller andet som bliver talt med ?
Avatar billede jaffafo Nybegynder
28. oktober 2005 - 19:20 #6
Jeg er rimelig sikker da jeg kører denne linje

response.write(len(a) & " " & a & " , ")

og der kommer intet mellemrum ekstra med ud.. :/
Avatar billede arne_v Ekspert
28. oktober 2005 - 19:27 #7
prøv lige:

        Dim i As Integer
        For i = 0 To (a.Length - 1)
            Console.WriteLine(a.Chars(i) & " " & Convert.ToInt32(a.Chars(i)))
        Next
Avatar billede arne_v Ekspert
28. oktober 2005 - 19:28 #8
erstat Console.WriteLine med Response.Write

:-)
Avatar billede jaffafo Nybegynder
28. oktober 2005 - 20:58 #9
Compiler Error Message: BC30456: 'Length' is not a member of 'Integer'.

i linje:
For i = 0 To (a.Length - 1)
Avatar billede arne_v Ekspert
28. oktober 2005 - 21:00 #10
så har du jo en forklaring !

a er Integer ikke String

og Len af en Integer returnerer tilsyneladende 4
Avatar billede jaffafo Nybegynder
28. oktober 2005 - 21:14 #11
ja det ville så forklare en del :)

jeg har formuleret tråden lidt dumt.. :/

men har du et eksempel på på hvordan man gør med et integer? :)
Avatar billede arne_v Ekspert
28. oktober 2005 - 21:15 #12
når a er en Integer så kan

Int32.Parse(a).ToString("0,000")

forkortes til

a.ToString("0,000")
Avatar billede arne_v Ekspert
28. oktober 2005 - 21:16 #13
antal cifre må du kunne finde med enten

a.ToString().Length

eller med brug af logaritme
Avatar billede arne_v Ekspert
28. oktober 2005 - 21:20 #14
Math.Floor(Math.Log10(a) + 1)
Avatar billede jaffafo Nybegynder
28. oktober 2005 - 22:06 #15
Takker mange gange.. det virker udmærket :)

smid et svar :)
Avatar billede arne_v Ekspert
28. oktober 2005 - 22:09 #16
kommer her
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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