Avatar billede shaagerup Nybegynder
13. august 2005 - 13:48 Der er 11 kommentarer og
1 løsning

ASP-funktion der isolerer etage fra adresse

Hej Eksperter..

Jeg mangler en lille funktion, der kan "se" på en adresse om den ligger i stuen, på første, anden, tredje .. osv.

F.eks.:
Min Vej 33, 2. lelj 3. <- returnerer "2"
Min Gade 34, st. th. <- returnerer "st"
Min Boulevard 35, 3. dør <- returnerer ""
Min Allé 36 <- retunerer ""

Alle forslag er velkomne. Bare skynd jer - jeg skal bruge det meget snart :-).
Avatar billede nielle Nybegynder
13. august 2005 - 13:50 #1
Split(", ", rs("etage"))
Avatar billede nielle Nybegynder
13. august 2005 - 13:51 #2
Omvendt:

Split(rs("etage"), ", ")
Avatar billede nielle Nybegynder
13. august 2005 - 13:54 #3
Det tager jeg i mig igen - der er ingen nem hurtig måde til at gøre det du vil have. Det er straks en anden snak hvis du opdelte adressen i flere felter i din database-tabel. Men ikke når de er slået sammen til en lang tekst-streng.
Avatar billede shaagerup Nybegynder
13. august 2005 - 13:58 #4
Jeg kunne godt tænke mig en mere færdig løsning :-). Dvs. en funktion der _kun_ returnerer etagen - enten st, 1, 2, 3 osv. (som eksemplerne ovenfor viser).
Avatar billede busschou Praktikant
13. august 2005 - 14:08 #5
er du sikker på det er alle tilfælde du har illustreret?
For hvis ikke, så skal vi bruge samtlige mulige tilfælde
Altså ikke noget med at der både er en etage og en dør?
For når der ikke er nogen umiddelbar logisk sammenhæng, så bliver man nød til at have samtlige tilfælde for at kunne lave en funktion
Avatar billede busschou Praktikant
13. august 2005 - 14:11 #6
jeg ved ikke hvor adresserne kommer fra?
Men jeg vil som nielle foreslå du sætter det anderledes op i evt en database hvis de kommer fra en database altså
For det er mere eller mindre "håbløst" ellers
Avatar billede shaagerup Nybegynder
13. august 2005 - 14:17 #7
I mit datasæt er der pt. ikke nogen adresser a la "Min Boulevard 35, 3. dør" - ville bare gerne have indbygget et eller anden form for undtagelsessystem i funktionen, som så kan tilrettes når problemet opstår.

Dog skal den kunne tackle ting som:
Min Rundkørsel 12, 1. sal, 2. lejl <- returnerer "1"
Min Rundkørsel 13, lej. 3 <- returnerer "" (ikke "lej")
(og så ellers de ovenstående - hvis "Min Boulevard"-eksemplet er for svært, behøver jeg det ikke i første om gang)
Avatar billede busschou Praktikant
13. august 2005 - 14:25 #8
det er ikke et spørgsmål om det er så svært med fire eksempler,
Det er et spørgsmål om at det er monster upraktisk hvis du vil udvide det
--
Funtion getNoget(tekst)
arr = split(tekst,",")
if ubound(arr) = 0 then
  getNoget = "" //dette svarer til, Min Allé 36
elseif InStr(arr(1),dør) then
  getNoget = "" //dette svarer til, Min Boulevard 35, 3. dør
else
  getNoget = split(arr(1)," ")(0) //dette svarer til de to første
end if
End Function
Avatar billede busschou Praktikant
13. august 2005 - 14:28 #9
hvis Min Rundkørsel 12, 1. sal, 2. lejl skal med så fanges den vist også i den sidste else statement

Pointen er bare at når der ikke er en hvis "standard" over dem, feks at salen altid stod lige efter tredie komma eller noget andet, ja så er det ikke særligt "smart" :o)
Avatar billede busschou Praktikant
13. august 2005 - 14:29 #10
ps der er en del slå fejl i funktionen, men ideen er at du må løbe hvert enkelt tilfælde igennem, når der ikke er nogen overordnet standard
Avatar billede shaagerup Nybegynder
13. august 2005 - 15:25 #11
Jeg har nu tilrettet funktionen lidt, så den efterhånden er ret skudsikker.

Function getFloor(tekst)
Dim arr,arrspace
arr = split(tekst,", ")

if ubound(arr) = 0 then
    getFloor = ""
    else
    arrspace = split(arr(1)," ")
   
    if InStr(arrspace(0),".") then
        if ubound(arrspace) <> 0 then
            if InStr(arrspace(1),"dør") or InStr(arrspace(0),"lej") then
                getFloor = ""
                else
                getFloor = split(arrspace(0),".")(0)
            end if
        else
            getFloor = split(arrspace(0),".")(0)
        end if
    end if
end if

End Function

Response.Write getFloor("" & Request.QueryString("test") & "")


Busschou: Vil du have point, skal du lægge et svar :-).
Avatar billede busschou Praktikant
13. august 2005 - 15:27 #12
oki jamen det gør jeg så :o)
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