07. august 2007 - 17:45
Der er
40 kommentarer og 1 løsning
finde og erstatte forakellige forekomster af ##27¤¤
Hej Jeg har brug hjælp til noget reg exp. jeg henter nogle tekster ud fra en database som indholder nogle beskrivelser, og der kan forekomme links til uddybende beskrivelser. linket er af formen: ##26¤¤ eller ##03¤¤ eller tilsvarende altså 2 havelåger# et tocifret tal, og 2 sole¤ F.eks: Denne luftmadras er excellent, og holder evigt ##23¤¤ disse links skal erstattes af et klikbart link som så skal have formen: <a href="26.htm" target="_blank">klik her</a> <a href="03.htm" target="_blank">klik her</a> <a href="87.htm" target="_blank">klik her</a> osv. Det må lige være det rigtige for en regexp. For hvis det skal laves som en replacefunktion i trad. asp så bliver det sgu noget tung.
Annonceindlæg fra Kingston Technology
07. august 2007 - 17:55
#1
Hvilket programmeringssprog?
07. august 2007 - 18:02
#2
nå jeg har fundet af det
07. august 2007 - 18:02
#3
jeg har bare lavet det som replace i asp
07. august 2007 - 18:03
#4
<ole> Dim oRegExp, sStr sStr = "Denne luftmadras er excellent, og holder evigt ##23¤¤" Set oRegExp = New RegExp With oRegExp .Pattern = "##(\d+)¤¤" .IgnoreCase = True .Global = True End With sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>") Set oRegExp = nothing /mvh </bole>
07. august 2007 - 18:03
#5
Ok :^) Du må meget gerne poste løsningen her sådan at andre kan lære af det. :^)
07. august 2007 - 18:04
#6
Heh :^)
07. august 2007 - 18:04
#7
- selv-he ;o)
07. august 2007 - 18:14
#8
<% str = "Denne luftmadras er excellent, og holder evigt ##23¤¤" beskrivelsen = replace(str,"##","<a href=""") beskrivelsen = replace(beskrivelsen,"¤¤",".htm"">SE mere HER</a>") %> er sådan jeg lavede den i asp-replace. men jeg vil benytte olebole's så kan der også modificeres lidt i det hen ad vejen så jeg laver lige et spgm med point til dig.
07. august 2007 - 18:17
#9
Nej, det behøver du ikke ... jeg har rigeligt i forvejen =)
07. august 2007 - 18:19
#10
Ups ... jeg glemte da et gåseøje efter href'en! Sådan skal replace'en se ud: sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")
07. august 2007 - 18:20
#11
den giver fejl på denne linie: sStr = oRegExp.Replace(sStr, "<a href=""$1.htm" target=""_blank"">klik her</a>") jeg har så forsøgt med sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>") det er dog heller ikke rigtigt
07. august 2007 - 18:21
#12
Ehhhhhhh ...... ?!??!!! Eksperten snupper zq et gåseøje :) Der skal være to gåseøjne før og efter attributterne i strengen ;o)
07. august 2007 - 18:21
#13
det5 går sgu godt sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")
07. august 2007 - 18:22
#14
ja.... GHrrrr, men det melder den så fejl på alligevel når jeg afvikler siden jeg har dobbelt efter htm
07. august 2007 - 18:25
#15
Type mismatch: 'replace' /shop_include.asp, line 120 som er sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>") med dobbelte gåseøjne som det skal være på trods af experten
07. august 2007 - 18:26
#16
Den med de dobbelte ""-tegn er der et simpelt trick for: sStr = oRegExp.Replace(sStr, "<a href='$1.htm' target='_blank'>klik her</a>")
07. august 2007 - 18:27
#17
Hvis du skriver dette i en fil og kalder den 'test.vbs', så virker det i hvertfald fint: Dim oRegExp, sStr sStr = "Denne luftmadras er excellent, og holder evigt ##23¤¤" Set oRegExp = New RegExp With oRegExp .Pattern = "##(\d+)¤¤" .IgnoreCase = True .Global = True End With sStr = oRegExp.Replace(sStr, "<a href=""$1.htm" target=""_blank"">klik her</a>") Set oRegExp = nothing MsgBox sStr
07. august 2007 - 18:28
#18
nielle >> nuvel, men det er ret kikset i et kodeforum :)
07. august 2007 - 18:28
#19
kan man ikke implementere regexp direkte i asp-applicationen? altså som almindelig vbscript?
07. august 2007 - 18:29
#20
Jamen, det er da ganske almindelig VBScript =)
07. august 2007 - 18:30
#21
*G* ja hvad ved jeg - det blev så heller ikke i dag jeg fik lært noget om regexp *G*
07. august 2007 - 18:30
#22
Jeps, der er en fejl på Eksperten. Det kan vi sagtens blive enige om. Det jeg mente var bare at folk som regel får det med at sætte "" i en VB Script streng galt i halsen. Og så er versionen med det enkelte ' iøvrigt lidt mere læsevenligt.
07. august 2007 - 18:34
#23
kan i forklare hvorfor den melder Type mismatch: 'replace' på sStr = oRegExp.Replace(sStr, "<a href='$1.htm' target='_blank'>klik her</a>")
07. august 2007 - 18:36
#24
Hvordan ser hele din kode ud?
07. august 2007 - 18:37
#25
sStr = rs("beskrivelse") Set oRegExp = New RegExp With oRegExp .Pattern = "##(\d+)¤¤" .IgnoreCase = True .Global = True End With sStr = oRegExp.Replace(sStr, "<a href='$1.htm' target='_blank'>klik her</a>")
07. august 2007 - 18:37
#26
Du skal også have en Dim er sted.
07. august 2007 - 18:38
#27
nå den skal være med? det er fordi den er i et loop, så droppede jeg den
07. august 2007 - 18:39
#28
Du dimmer før loopet
07. august 2007 - 18:39
#29
Den skal bare være Dim'et udenfor loop'et. Iøvrigt er det kun Replace-delen som skal være indenfor loopet. Alt andet er for kost-inefktivt. :^)
07. august 2007 - 18:40
#30
den brokker sig sgu stadig, - nå jeg må kigge dybere
07. august 2007 - 18:41
#31
Du kan eventuelt give os noget mere kode?
07. august 2007 - 18:42
#32
hvis option explicit bruges, så dim er en nødvendighed, så ville fejlen være en helt anden. Replace kan nok ikke lide indeholdet af din sStr-variabel
07. august 2007 - 18:43
#33
Dim oRegExp, sStr Set oRegExp = New RegExp With oRegExp .Pattern = "##(\d+)¤¤" .IgnoreCase = True .Global = True End With [LOOP] sStr = [ET ELLER ANDET] sStr = cStr(sStr) sStr = oRegExp.Replace(sStr, "<a href=""$1.htm" target=""_blank"">klik her</a>") ' Gør noget med sStr [/LOOP] Set oRegExp = nothing
07. august 2007 - 18:43
#34
Njaaahhh :) sStr = CStr(sStr)
07. august 2007 - 18:44
#35
prøver
07. august 2007 - 18:45
#36
Prøv lige med dette pattern: .Pattern = "\#\#(\d+)¤¤" #-tegnet har en speciel betydning i regex.
07. august 2007 - 18:47
#37
kors................ det var min cursortype : jeg måtte ikke genbruge recordsettet jeg havde sStr = rs("blablqa") men rs("blablqa") var tom anden gang den blev kaldt
07. august 2007 - 18:48
#38
Ja, som sagt, funker det i en alm. *.vbs-fil ;o)
07. august 2007 - 18:50
#39
- men cpufan, tjek lige strukturen i (07/08-2007 18:43:09). Du bør spare på, hvad du lægger ind i loopet
07. august 2007 - 18:52
#41
ja tak ole jeg lavet det sådan nu.....
Kurser inden for grundlæggende programmering