Avatar billede f_rollo Nybegynder
13. december 2004 - 23:05 Der er 16 kommentarer og
1 løsning

Kan man lave tal til bogstaver?

Hej

Jeg skal bruge en script i asp eller evt javascript eller noget, som kan omforme tal til bogstaver.

F.eks. således at hvis jeg putter 2500 ind så bliver det til Totusindfemhundrede eller evt bare til to fem nul nul.

Allerhelst vil jeg have en der skriver den fulde løsning (Totusindfemhundrede), men hvis ingen har en ide, så bare omformning til enkelte tal.
Avatar billede baitianlong Nybegynder
14. december 2004 - 00:07 #1
Må det være i PHP (du skriver asp, javascript eller noget) ?
Avatar billede f_rollo Nybegynder
14. december 2004 - 00:41 #2
nej... alt resten er asp og serveren er windows
Avatar billede and_ Nybegynder
14. december 2004 - 10:37 #3
Du kan jo lave en simpel til at starte med:

<%
tekst = "2500"
response.write("Gammel værdi: " & tekst & "<br>")

tekst = replace(tekst, "0", "nul ")
tekst = replace(tekst, "1", "en ")
tekst = replace(tekst, "2", "to ")
tekst = replace(tekst, "3", "tre ")
tekst = replace(tekst, "4", "fire ")
tekst = replace(tekst, "5", "fem ")
tekst = replace(tekst, "6", "seks ")
tekst = replace(tekst, "7", "syv ")
tekst = replace(tekst, "8", "otte ")
tekst = replace(tekst, "9", "ni ")

response.write("Ny værdi: " & tekst)
%>
Avatar billede and_ Nybegynder
14. december 2004 - 10:38 #4
den vil lave din replace til: to fem nul nul

Hvis man skal op i den anden løsning, skal du til at tælle hvor mange cifre der er osv... Lidt mere halsbrækkende...
Avatar billede f_rollo Nybegynder
14. december 2004 - 10:59 #5
nu siger du Lidt mere halsbrækkende...
men kan det lade sig gøre? Ved du hvordan
Avatar billede and_ Nybegynder
14. december 2004 - 11:15 #6
altså... du skal jo have læst længden på strengen:

tekst = "2500"
tekstlaengde = len(tekst)

her kan du så fx. lave en do-while løkke med en select case, hvor dine forskellige værdier er repræsenteret i: hundreder, tusinder, millioner osv...

og du kan selvfølgelig også kombinere det med ovenstående løsningsforslag...
Avatar billede and_ Nybegynder
14. december 2004 - 11:44 #7
nu har jeg lige fusket noget sammen....
jeg arbejder lige videre med det:

<%
function erstat(tekst)
    'tekst = replace(tekst, "0", "nul")
    tekst = replace(tekst, "1", "en")
    tekst = replace(tekst, "2", "to")
    tekst = replace(tekst, "3", "tre")
    tekst = replace(tekst, "4", "fire")
    tekst = replace(tekst, "5", "fem")
    tekst = replace(tekst, "6", "seks")
    tekst = replace(tekst, "7", "syv")
    tekst = replace(tekst, "8", "otte")
    tekst = replace(tekst, "9", "ni")
    erstat = tekst
end function

function nulfunk(vaerdi)
    if vaerdi = "0" then
        vaerdi = ""
    end if
    nulfunk = vaerdi
end function

tekst = "2500"
tekstlaengde = len(tekst)
i = 0

do while i <= tekstlaengde
    teksten = left(tekst, 1)

    select case tekstlaengde
        case 1
            if teksten = "0" then teksten = "nul" end if
            betegnelse = ""
        case 2
            nulfunk(teksten)
            betegnelse = "ti"
        case 3
            nulfunk(teksten)
            betegnelse = "hundrede"
        case 4
            nulfunk(teksten)
            betegnelse = "tusinde"
    end select

    tekst = right(tekst, (len(tekst) - 1))
    tekstlaengde = tekstlaengde - 1
    i = i + 1
    str = str & erstat(teksten) & betegnelse
    'response.write str & "<br>"
loop
response.write "<br>" & str
%>
Avatar billede and_ Nybegynder
14. december 2004 - 11:47 #8
sorry... du fik lige min egen ;)
her er den rigtige:

<%
function erstat(tekst)
    tekst = replace(tekst, "0", "nul")
    tekst = replace(tekst, "1", "en")
    tekst = replace(tekst, "2", "to")
    tekst = replace(tekst, "3", "tre")
    tekst = replace(tekst, "4", "fire")
    tekst = replace(tekst, "5", "fem")
    tekst = replace(tekst, "6", "seks")
    tekst = replace(tekst, "7", "syv")
    tekst = replace(tekst, "8", "otte")
    tekst = replace(tekst, "9", "ni")
    erstat = tekst
end function

tekst = "2500"
tekstlaengde = len(tekst)
i = 0

do while i <= tekstlaengde
    teksten = left(tekst, 1)

    select case tekstlaengde
        case 1
            betegnelse = ""
        case 2
            betegnelse = "ti"
        case 3
            betegnelse = "hundrede"
        case 4
            betegnelse = "tusinde"
    end select

    tekst = right(tekst, (len(tekst) - 1))
    tekstlaengde = tekstlaengde - 1
    i = i + 1
    str = str & erstat(teksten) & betegnelse
loop
response.write "<br>" & str
%>
Avatar billede and_ Nybegynder
14. december 2004 - 11:48 #9
håber at du kan se det overordnede i det...
Avatar billede f_rollo Nybegynder
14. december 2004 - 12:03 #10
Ja det virker, men den har problemer med to nuller til sidst...
ved 2500 skriver den totusindefemhundredenulti... den skulle jo egentligt bare stoppe efter totusindefemhundrede og undlade nulti
Avatar billede f_rollo Nybegynder
14. december 2004 - 12:05 #11
Ved 8000 skriver den ottetusindenulhundredenulti... det virker ret sjovt...
Avatar billede and_ Nybegynder
14. december 2004 - 12:06 #12
Så ændrer vi da bare lige løkken :p

<%
function erstat(tekst)
    tekst = replace(tekst, "0", "nul")
    tekst = replace(tekst, "1", "en")
    tekst = replace(tekst, "2", "to")
    tekst = replace(tekst, "3", "tre")
    tekst = replace(tekst, "4", "fire")
    tekst = replace(tekst, "5", "fem")
    tekst = replace(tekst, "6", "seks")
    tekst = replace(tekst, "7", "syv")
    tekst = replace(tekst, "8", "otte")
    tekst = replace(tekst, "9", "ni")
    erstat = tekst
end function

tekst = "2500"
tekstlaengde = len(tekst)
i = 0

do while i < tekstlaengde
    teksten = left(tekst, 1)

    select case tekstlaengde
        case 1
            betegnelse = ""
        case 2
            betegnelse = "ti"
        case 3
            betegnelse = "hundrede"
        case 4
            betegnelse = "tusinde"
    end select

    tekst = right(tekst, (len(tekst) - 1))
    tekstlaengde = tekstlaengde - 1
    i = i + 1
    str = str & erstat(teksten) & betegnelse
loop
response.write "<br>" & str
%>
Avatar billede and_ Nybegynder
14. december 2004 - 12:12 #13
<%
function erstat(tekst)
    tekst = replace(tekst, "0", "")
    tekst = replace(tekst, "1", "en")
    tekst = replace(tekst, "2", "to")
    tekst = replace(tekst, "3", "tre")
    tekst = replace(tekst, "4", "fire")
    tekst = replace(tekst, "5", "fem")
    tekst = replace(tekst, "6", "seks")
    tekst = replace(tekst, "7", "syv")
    tekst = replace(tekst, "8", "otte")
    tekst = replace(tekst, "9", "ni")
    erstat = tekst
end function

function nulfunk(vaerdi)
    if vaerdi = "0" then vaerdi = "" end if
    nulfunk = vaerdi
end function

tekst = "8000"
tekstlaengde = len(tekst)
i = 0

do while i < tekstlaengde
    teksten = left(tekst, 1)
    teksten = nulfunk(teksten)
    betegnelse = ""

    if not teksten = "" then
        select case tekstlaengde
            case 1
                betegnelse = ""
            case 2
                betegnelse = "ti"
            case 3
                betegnelse = "hundrede"
            case 4
                betegnelse = "tusinde"
        end select
    end if

    tekst = right(tekst, (len(tekst) - 1))
    tekstlaengde = tekstlaengde - 1
    i = i + 1
    str = str & erstat(teksten) & betegnelse
loop
response.write "<br>" & str
%>
Avatar billede and_ Nybegynder
14. december 2004 - 12:15 #14
så gider jeg ikke rigtig mere med den... nu mår der da være noget du selv kan arbejde videre på:

<%
function erstat(tekst)
    tekst = replace(tekst, "0", "")
    tekst = replace(tekst, "1", "En")
    tekst = replace(tekst, "2", "To")
    tekst = replace(tekst, "3", "Tre")
    tekst = replace(tekst, "4", "Fire")
    tekst = replace(tekst, "5", "Fem")
    tekst = replace(tekst, "6", "Seks")
    tekst = replace(tekst, "7", "Syv")
    tekst = replace(tekst, "8", "Otte")
    tekst = replace(tekst, "9", "Ni")
    erstat = tekst
end function

tekst = "8150"
tekstlaengde = len(tekst)
i = 0

do while i <= tekstlaengde
    teksten = left(tekst, 1)
    betegnelse = ""

    if teksten = "0" then teksten = "" end if
    if not teksten = "" then
        select case tekstlaengde
            case 1
                betegnelse = ""
            case 2
                betegnelse = "ti"
            case 3
                betegnelse = "hundrede"
            case 4
                betegnelse = "tusinde"
        end select
    end if

    tekst = right(tekst, (len(tekst) - 1))
    tekstlaengde = tekstlaengde - 1
    i = i + 1
    str = str & erstat(teksten) & betegnelse
loop
response.write "<br>" & str
%>
Avatar billede f_rollo Nybegynder
14. december 2004 - 13:23 #15
Ja det er rigeligt... tusinde tak

Smider du et svar?
Avatar billede and_ Nybegynder
14. december 2004 - 14:47 #16
svar ;)

brug papir og kuglepen.... det gør jeg tit når jeg skal beskrive funktionaliteten for mig selv... Så er det nemt bagefter at skulle definere de "steps" og funktioner skal ske ved hver handling...

Men nok om det...

Hvis du får problemer, så spørg igen.. så kigger jeg på det ;)

takker for points på forhånd
Avatar billede f_rollo Nybegynder
14. december 2004 - 15:33 #17
velbekomme
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