Avatar billede thomas_b Nybegynder
06. april 2006 - 14:43 Der er 23 kommentarer og
1 løsning

Problemer med Replace()

Hej Eksperter...

Jeg har denne linie...:
ip_URL_adresse = Replace(ip_URL_adresse, "http://www.minside.dk/", replacewith("*En gammel side, der er blevet surfet på igen*"))


Den virker ikke rigtig efter hensigten...!
Den skulle meget gerne kunne finde ud af om min streng indeholder http://www.minside.dk/....et eller andet.... og hvis den gør det så skal den smide den sætning "væk" og estate den med "*En gammel side, der er blevet surfet på igen*" ?

På forhånd tak...
Avatar billede softspot Forsker
06. april 2006 - 14:52 #1
Det kan være fordi replace arbejder case sensitive som udgangspunkt og at det du forsøger at udskifte ikke matcher helt (hvad angår store og små bogstaver). Du skal smide et par parametre mere på replace for at udskifte case insensitive:

ip_URL_adresse = Replace(ip_URL_adresse, "http://www.minside.dk/", replacewith("*En gammel side, der er blevet surfet på igen*"),1,-1,1)
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:03 #2
Og hvad er det helt præsist de parametre gør...?
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:04 #3
så siger den..::

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'replacewith'
Avatar billede softspot Forsker
06. april 2006 - 15:07 #4
Den 4. parameter (den første af de nye jeg har tilføjet) er startpositionen for udskiftningen, den 5. er antallet af udskiftninger der skal foretages (-1 betyder alle) og dne 6. parameter angiver at der skal udskiftes case-insensitive.

Det lader til at replacewith-funktionen returnerer noget ulovligt. Hvor har du defineret den funktion i din kode (har du overhovedet defineret den)? Prøv evt. at udskrive resultatet af den funktion med response.write, f.eks.:

response.write replacewith("*En gammel side, der er blevet surfet på igen*")
response.end

lige inden du kalder den replace-funktion jeg foreslog dig.
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:12 #5
Vil du have...

response.write replacewith("*En gammel side, der er blevet surfet på igen*")
response.end

inden den anden kode eller efter...?
Nu har jeg prøvet begge, og virker stadig ikke...!
Avatar billede softspot Forsker
06. april 2006 - 15:23 #6
Inden replacekaldet (jf. denne formulering: "lige inden du kalder den replace-funktion")

Er fejlen stadig den samme eller siger den noget andet hvis du udskriver resultatet af kaldet til replacewith?
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:38 #7
Med denne kode...:

response.write replacewith("*En gammel side, der er blevet surfet på igen*")
response.end

ip_URL_adresse = Replace(ip_URL_adresse, "http://www.minside.dk/", replacewith("*En gammel side, der er blevet surfet på igen*"),1,-1,1)

Siger den:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'replacewith'

På denne linie: response.write replacewith("*En......
Avatar billede softspot Forsker
06. april 2006 - 15:41 #8
OK, så spørger jeg lige direkte: hvor har du lavet funktionen replacewith (og hvordan ser den ud)?
Avatar billede softspot Forsker
06. april 2006 - 15:42 #9
Er det evt. bare dette du er på jagt efter:

ip_URL_adresse = Replace(ip_URL_adresse, "http://www.minside.dk/", "*En gammel side, der er blevet surfet på igen*",1,-1,1)
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:47 #10
Sådan...!

<%
response.write replacewith("*En gammel side, der er blevet surfet på igen*")
response.end

ip_URL_adresse = Replace(ip_URL_adresse, "http://www.minside.dk/", replacewith("*En gammel side, der er blevet surfet på igen*"),1,-1,1)
%>
Avatar billede softspot Forsker
06. april 2006 - 15:49 #11
Ja, der kalder du den, men hvor har du implementeret koden/funktionaliteten til den (bemærk at der er forskel på om man kalder en funktion eller om man definerer den)?
Avatar billede softspot Forsker
06. april 2006 - 15:49 #12
Har du i øvrigt prøvet med forslaget fra mit indlæg af 06/04-2006 15:42:20?
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:51 #13
Ang. 06/04-2006 15:42:20

Ja det er jeg bortset fra at jeg skal have "ip_URL_adresse" til at være = *En gammel side, der er blevet surfet på igen*

Og det er den ikke nu... hvor f.eks. ip_URL_adresse = "http://www.minside.dk/test/script/default.asp" der skal sætningen bare sige: *En gammel side, der er blevet surfet på igen*
Avatar billede thomas_b Nybegynder
06. april 2006 - 15:52 #14
Funktionen ligger i browsern som jeg har forstået det...! http://www.w3schools.com/vbscript/func_replace.asp
Avatar billede softspot Forsker
06. april 2006 - 16:02 #15
Jeg tænkte nok det var en misforståelse :)

replacewith er bare det navn som w3schools har valgt at give den parameter for at gøre forståelsen af parameterens funktion lettere. Det der skal stå i den parameter er den værdi som du rent faktisk skal udskifte parameteren "find" med.

Replace-funktionen udskifter kun den del af strengen som du angiver den skal udskifte, så hvis du angiver:

ip_URL_adresse = Replace(ip_URL_adresse, "http://www.minside.dk/", "*En gammel side, der er blevet surfet på igen*")

hvor

ip_URL_adresse = "http://www.minside.dk/test/side.asp"

så vil ip_URL_adresse efter kaldet til replace() indeholde

ip_URL_adresse = "*En gammel side, der er blevet surfet på igen*/test/side.asp"
Avatar billede thomas_b Nybegynder
06. april 2006 - 16:08 #16
Hvordan kunne man så lave dette nummer...?
Avatar billede softspot Forsker
06. april 2006 - 16:12 #17
Ikke forstået? Hvilket nummer?
Avatar billede thomas_b Nybegynder
06. april 2006 - 20:05 #18
med at angive en ny værdi for ip_URL_adresse hvis den indeholder: http://www.minside.dk/
Avatar billede softspot Forsker
06. april 2006 - 22:46 #19
Det er netop det vi lige har gennemgået, så hvis du kigger ovenfor, så burde du have løsningen... :)
Avatar billede thomas_b Nybegynder
06. april 2006 - 22:49 #20
Nej, for hvad så hvis den hedder http://www.minside.dk/test/side.asp ?
Avatar billede softspot Forsker
06. april 2006 - 23:06 #21
OK, jeg skal lige forstå problemstillingen så, for jeg havde opfattelsen af at du bare ville udskifte værdien i strengen og lade resten af strengen være intakt.

Det lyder som om du leder efter en anden funktion, nemlig instr som søger efter en delstreng i en streng og returnerer positionen af den delstreng, hvis den findes og nul hvis den ikke findes. Den bruges således:

if instr(ip_URL_adresse, "http://www.minside.dk/") > 0 then
  ip_URL_adresse = "*En gammel side, der er blevet surfet på igen*"
end if

rent faktisk kan du checke om strengen starter med den værdi ved at checke om positionen er = 1 i stedet for nul, således:

if instr(ip_URL_adresse, "http://www.minside.dk/") = 1 then
  ip_URL_adresse = "*En gammel side, der er blevet surfet på igen*"
end if

Alternativt, check om starten af strengen er lig med dit domænenavn:

domain = "http://www.minside.dk/"
if left(ip_URL_adresse, len(domain)) = domain then
  ip_URL_adresse = "*En gammel side, der er blevet surfet på igen*"
end if
Avatar billede thomas_b Nybegynder
06. april 2006 - 23:16 #22
Det var præsist dette jeg lede efter...:
if instr(ip_URL_adresse, "http://www.minside.dk/") = 1 then
  ip_URL_adresse = "*En gammel side, der er blevet surfet på igen*"
end if

1000 tak... lægger du lige et svar.. så for du dine point...
Avatar billede softspot Forsker
07. april 2006 - 00:35 #23
Velbekomme :)
Avatar billede softspot Forsker
07. april 2006 - 17:04 #24
Tak for point :)
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