Avatar billede hobbez Nybegynder
07. september 2005 - 19:35 Der er 4 kommentarer og
1 løsning

Checke om en tekststreng indeholder en anden tekststreng

Hvordan checker jeg lettest om en tekststreng indeholder en anden tekststreng.

Jeg har fx. en tekststreng der indeholder en e-mail adresse, og vil gerne checke om den indeholder ".dk" eller måske endda "hotmail.com".

Hvordan gør jeg det?

Og hvordan gør jeg hvis jeg gerne vil checke om den indeholder et af flere kriterier? Altså hvis jeg gerne vil checke om tekststrengen indeholder ".dk" ELLER "hotmail.com" ELLER.....

Jeg kan naturligvis bruge svaret på del et og lave en række IF ... ELSE IF ... men det må vel kunne gøres mere elegant?


60 point for besvarelse af begge dele :o)

/Rob
Avatar billede cpufan Juniormester
07. september 2005 - 19:39 #1
instr(tekststreng,".dk") giver en startplacering af 1. forekomst af .dk,
hvis der ikke er nogen giver den 0
Avatar billede cpufan Juniormester
07. september 2005 - 19:41 #2
måske der kan bruges select case, men det kommer lidt an på den sammenhæng det skal bruges i..
kan du uddybe det, som funktionen skal bruges til, og hvilke tilfælde der kan opstå
Avatar billede hobbez Nybegynder
07. september 2005 - 20:06 #3
Ja, det kan jeg da:

Jeg har en form som har et felt vi kan kalde T2

På den ASP-side jeg behandler data laver jeg så en:

Rs1.Addnew
Rs1("email") = Request.Form("T2")

Så er jeg klar til at skrive til databasen, men forinden vil jeg gerne lige sætte et 'flag' hvis e-mail adressen indeholder enten ".dk" eller "hotmail.com" eller "gmail.com" eller ......


Hvis jeg vidste præcist hvilken e-mail adresse jeg ville checke imod ville jeg gøre det sådan:

If LCase(Request.Form("T2")) = "denne@adresse.dk" Then
        Rs1("flag") = 1

Og det fungerer fint.

Men jeg kender jo ikke den præcise adresse jeg vil checke mod, kun en del af adressen.

Og jeg vil gerne checke mod mere end et kriterie, hvilket jeg jo kunne gøre som en række IF ... OR ... THEN, men jeg håber på en mere elegant løsning.

/Rob
Avatar billede cpufan Juniormester
07. september 2005 - 20:20 #4
dim tjekmail(x) ' x = totalantal forskellige
tjekmail(1) = ".dk"
tjekmail(2) = "hotmail.com"
osv.
for i = 1 to x
if instr(request.form("t2"),tjekmail(i))>0 then Rs1("flag")=1
next

er nok det korteste
Avatar billede hobbez Nybegynder
09. september 2005 - 11:24 #5
Ja, et FOR - NEXT loop havde jeg naturligvis også tænkt på, men tak for hjælpen :o)

/Rob
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