Avatar billede tdh1309 Juniormester
11. oktober 2006 - 19:56 Der er 8 kommentarer og
1 løsning

replace og wildcarts

Hej

Jeg vil gerne have en udviddelse af replace funktionen, så man arbejde med wildcards.
Hvis den allerede kan det idag, vil jeg gerne bede om en kort beskrivelse, da jeg ikke har kunnet finde noget om dette.

Eks.
strText = "<b>Dette er fed</b> Dette er ikke fedt<br>"

strText = nyreplace(strText,"<B>*</B>","Rettet"

Giver
strText = "Rettet Dette er ikke fedt<br>"

Jeg har selv lavet en funktion der gør ovenstående, men den er EKSTREM langsom...
Avatar billede tdh1309 Juniormester
11. oktober 2006 - 20:06 #1
Det skal nok bemærkes at jeg kører på Chilli Asp
Avatar billede nielle Nybegynder
11. oktober 2006 - 20:23 #2
Et bud:

Set re = New RegExp
re.Pattern = "<B>.*?</B>"
re.IgnoreCase = True

strText = "<b>Dette er fed</b> Dette er ikke fedt<br>"
strText = re.Replace(strText, "Rettet")
Avatar billede nielle Nybegynder
11. oktober 2006 - 20:27 #3
Pakket ind som en funktion, kunne det se sådan her ud:

Function nyreplace(strText, pattern, replacement)
    Set re = New RegExp
    re.Pattern = Replace(pattern, "*", ".*?")
    re.IgnoreCase = True

    nyreplace = re.Replace(strText, replacement)
End Function

strText = "<b>Dette er fed</b> Dette er ikke fedt<br>"
strText = nyreplace(strText, "<B>*</B>", "Rettet")
Avatar billede tdh1309 Juniormester
11. oktober 2006 - 20:32 #4
Super...
Har du et godt link til hvor jeg kan læse lidt mere om RegExp og hvordam pattern defineres? Gerne på dansk...

Du har fortjent dine point, så kom med et svar....


MANGE TAK FOR HJÆLPEN
Avatar billede nielle Nybegynder
11. oktober 2006 - 20:36 #5
Den eneste jeg kender på dansk er godt nok til PHP, men den dækker grundbegreberne:

http://www.phpartikler.dk/artikler/regexp.php

Selv foretrækker jeg dog denne på engelsk:

http://www.regular-expressions.info/

Og så er der jo altid Eksperten, hvor der er god hjælp at hente om den slags ting :^)
Avatar billede tdh1309 Juniormester
11. oktober 2006 - 21:31 #6
Lige to tillægsspørgsmål:

Hvis jeg anvender din nyreplace funktion.

1) hvis jeg nu vil udskifte ø men IKKE Ø, hvordan klares det (altså den skal skelnes mellem store og små bogstaver)
2) jeg har en streng hvor der står adfadsff<?xml adslkfjafdlj>
Jeg vil gerne have udskiftet <?xml adsfadf> men spørgsmåltegnet driller!
Avatar billede nielle Nybegynder
11. oktober 2006 - 21:39 #7
Ad 1)

Det er denne linje:

re.IgnoreCase = True

- som gør at den ikke skelner mellem store og små bogstaver. Bare fjern den.

Ad 2)

Et ?-tegn har en speciel betydning i et regulært udtryk (ligesom tegnene *, +, (, ), |, [ og ]). Hvis man derfor har et ?-tegn som faktisk bare skal behandles som et ?-tegn, skal det escapes sådan at det mister denne særbetydning.

Det gør man ved at sætte et \ foran:

<\?xml adslkfjafdlj>
Avatar billede tdh1309 Juniormester
11. oktober 2006 - 22:14 #8
Mange tak - det arbejder jeg videre med...
Avatar billede nielle Nybegynder
11. oktober 2006 - 22:24 #9
Du skal forresten også være klar over at et '.' har en særlig betydning. Det matcher nemlig et vilkårligt tegn. Hvis det kun må matche et punktum, skal det escapes.
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