Avatar billede axkris Nybegynder
02. april 2005 - 20:13 Der er 10 kommentarer og
1 løsning

Erstat store med små bogstaver

Hej alle

Jeg skal bruge et script, som leder en streng bestående af en sætning igennem og finder ord, som kun er stavet med store bogstader, som den så laver om til små bogstaver.

F.eks.: "Ole fik en SEJ cd-afspiller. NEII - hvor var den cool"

Om til: "Ole fik en sej cd-afspiller. Neii - hvor var den cool"

Men den skal også check om der står et punktum, fordi så skal den starte med et stort begyndelsesbogstav, som ved "Neii".
Avatar billede thesurfer Nybegynder
02. april 2005 - 21:09 #1
Hvordan vil du kende forskel på "Ole" (navne starter med stort) og "Sej" (et ord der starter med stort)..?

Den ved jo ikke hvad der er forskel på navne og ord.. med mindre at du har en komplet liste med alle navnene.. :-)

Man kunne jo splitte strengen op ved ".", og lave det første bogstav til UpperCase..
Eller lave hele strengen til LowerCase, og derefter lave et stort bogstav efter "."..
Avatar billede thesurfer Nybegynder
02. april 2005 - 21:10 #2
Husk Trim(strengen) hvis du har tænkte dig at bruge split.. ellers kan mellemrum jo være det første tegn..
Avatar billede axkris Nybegynder
02. april 2005 - 21:18 #3
Den skal kun gøre de ord små, som udelukkende består af store bogstaver.

F.eks. "Se min FLOTTE hjemmeside."
om til: "Se min flotte hjemmeside"

Dog skal den lige kigge efter store begyndelsbogstaver.
Avatar billede thesurfer Nybegynder
02. april 2005 - 22:45 #4
Jeg tror at det er meget nemmere at lave med RegExp.. men prøver lige at lave nogle funktioner..
Avatar billede thesurfer Nybegynder
02. april 2005 - 23:09 #5
Funktionerne er færdige.. skriver lige nogle kommentarer til linierne..
Avatar billede thesurfer Nybegynder
02. april 2005 - 23:20 #6
Her er koden:

option explicit ' alle variabler SKAL dimmes! (undgå stavefejl)

' de variabler vi skal brug, dimmes:
dim i, OrdTallet ' tællere
dim streng ' streng (originale streng)
dim bogstav, tmp ' midlertidig variabler
dim NyStreng ' ny streng (den nye og rettet streng)
dim StortBogstav ' stort bogstav (switch, 0/1)
dim SplittetStreng, Ordet ' arrays
dim AntalPrikker ' antallet af "."

streng = "Ole fik en SEJ cd-afspiller. NEII - hvor var den cool" ' test-streng.. fjernes efter test

function RetStoreOrd(TempString) ' funktion til at rette ord med STORE BOGSTAVER
' nulstil variabler:
StortBogstav = 0
NyStreng = ""
tmp = ""

SplittetStreng = split(TempString, " ") ' lav SplittetStreng til en array
for OrdTallet = 0 to ubound(SplittetStreng)  ' kør loop fra 0 til SplittetStreng-max
    ordet = SplittetStreng(OrdTallet) ' smid det nuværende ord over i variablen "ordet"
    StortBogstav = 0 ' nulstil StortBogstav efter brug
    for i = 1 to len(ordet) ' kør loop fra først bogstav og til længden af ordet
        bogstav = mid(ordet, i, 1) ' smid nuværende bogstavet over i variablen "bogstav"
        if asc(bogstav) >= 65 and asc(bogstav) =< 90 then ' check om det er et STORT bogstav
            ' yep.. det er et stort bogstav
            if StortBogstav = 1 then ' check om det foregående bogstav også er stort
                ordet = lcase(ordet) ' der er mere end 1 stort bogstav. Ordet ændres til små bogstaver
                exit for ' hop ud af loopen
            else
                StortBogstav = 1 ' det er det først store bogstav i ordet
            end if
        end if
    next

    NyStreng = NyStreng & ordet & " " ' tilføj ordet til NyStreng
next ' outer

NyStreng = left(NyStreng, len(NyStreng) - 1) ' fjern det sidste mellemrum
RetStoreOrd = NyStreng ' send den korrigerede streng tilbage
end function

function RetBogstaverEfterPunktum(StoreBogstaverEfterPunktum)
' nulstil:
tmp = ""
NyStreng = ""

AntalPrikker = split(StoreBogstaverEfterPunktum, ".") ' lav AntalPrikker til et array
for i = 0 to ubound(AntalPrikker) ' kør loop fra 0 til AntalPrikker-max
    tmp = trim(AntalPrikker(i)) ' smid ordet over i tmp-variablen
    NyStreng = NyStreng & ucase(left(tmp, 1)) & mid(tmp, 2) & ". " ' tilføk til NyStreng
next

' Første bogstav skal med stort, og fjern overflødige tegn:
NyStreng = Ucase(left(NyStreng, 1)) & mid(NyStreng, 2, len(NyStreng)-3)
RetBogstaverEfterPunktum = NyStreng ' send den korrigerede streng tilbage
end function


streng = RetStoreOrd(streng) ' ret ord der kun består af STORE bogstaver
streng = RetBogstaverEfterPunktum(streng) ' ret stort bogstav efter punktum

response.write streng ' udskriv sætningen til skærmen/browseren
Avatar billede thesurfer Nybegynder
02. april 2005 - 23:24 #7
Hvis du ikke vil have at folk skriver "hej.....du", kan du bruge (erstat med den nuværende linie):

    if tmp <> "" then NyStreng = NyStreng & ucase(left(tmp, 1)) & mid(tmp, 2) & ". " ' tilføj til NyStreng
Avatar billede axkris Nybegynder
02. april 2005 - 23:43 #8
Wow - takker - jeg kigger på det senere :-)
Avatar billede axkris Nybegynder
08. april 2005 - 10:49 #9
Takker - det virker - tryk svar :-)
Avatar billede thesurfer Nybegynder
08. april 2005 - 21:25 #10
svar trykket :-)
Avatar billede thesurfer Nybegynder
08. april 2005 - 21:29 #11
Det var hurtigt :-)
Takker for points :-)
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