02. april 2005 - 20:13Der 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".
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 "."..
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
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.