/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Case Sensitive ved Replace function
Fra : Peter Nielsen


Dato : 16-02-06 18:20

Hej NG

Er ved at lave sådan en Function der ligger lidt html på en tekst

Har lavet det her:

Function AddCodes(text)
text = replace(text,"","<b>")
text = replace(text,"
","</b>")
text = replace(text,"","<i>")
text = replace(text,"
","</i>")
text = replace(text,"","<u>")
text = replace(text,"
","</u>")


AddCodes = text
end function

Men hvad nu hvis folk de bruger [b] ... så kan den ikke finde ud af at
replace fordi at b'et er lille... Det kan man selvfølgelig godt bare lave en
6 rækker mere med små bogstaver... men har også en der hedder [CENTER] ...
Og der skal jo laves mange hvis den er case sensitive...

Nogle der har nogle ideer til hvordan man laver det så?

Har prøvet med
text = replace(Ucase(text),"[B]","<b>")
men det gør bare at alt text bliver ucase.. synes jo ellers ikke at jeg ber
den om at replace det hele til ucase der, men det mener den jo

Nogle forslag?

MVH
Peter



 
 
Palle Hansen (17-02-2006)
Kommentar
Fra : Palle Hansen


Dato : 17-02-06 09:25

Peter Nielsen wrote:
> text = replace(text,"[B]","<b>")
> Men hvad nu hvis folk de bruger [b] ... så kan den ikke finde ud af at
> replace fordi at b'et er lille...

Den fulde syntax for Replace:
Replace(expression, find, replacewith[, start[, count[, compare]]])

hvor compare kan antage
0 = vbBinaryCompare - Perform a binary comparison
1 = vbTextCompare - Perform a textual comparison

så din kode bliver
text = replace(text,"[B]","<b>", 1, -1, 1)

Jens Gyldenkærne Cla~ (17-02-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-02-06 13:11

Peter Nielsen skrev:

> Function AddCodes(text)
> text = replace(text,"","<b>")
> text = replace(text,"
","</b>")
> text = replace(text,"","<i>")
> text = replace(text,"
","</i>")
> text = replace(text,"","<u>")
> text = replace(text,"
","</u>")
>
>
> AddCodes = text
> end function

Jeg hiver lige min kæphest op af skuffen - sådan en erstatning er
en oplagt mulighed for et regulært udtryk. Nedenstående funktion
klarer alle seks erstatninger i ét hug:


Function addformat(tekst)
   dim regEx,strOut
   set regEx = New regExp
   regEx.IgnoreCase = True
   regEx.Global = True
   regEx.Pattern = "\[([/]*[biu])\]"
   strOut = regEx.replace(tekst, "<$1>")
   set regEx = nothing
   addformat = strOut
End Function


Den matcher en venstre kantparentes efterfulgt af en evt. skråstreg
efterfulgt af ét af tegnene b,i,u (uden hensyntagen til store og
små bogstaver) efterfulgt af en højre kantparentes. $1 henviser til
indholdet i parentesen i et match - derfor erstattes [b] med <b>,
[/U] med </U> etc.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørn Andersen (17-02-2006)
Kommentar
Fra : Jørn Andersen


Dato : 17-02-06 14:43

On Fri, 17 Feb 2006 13:11:26 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Jeg hiver lige min kæphest op af skuffen - sådan en erstatning er
>en oplagt mulighed for et regulært udtryk.

Jeg sad også bare og ventede på, at den kom


--
Jørn Andersen,
Brønshøj

jamen (17-02-2006)
Kommentar
Fra : jamen


Dato : 17-02-06 15:57

Jens Gyldenkærne Clausen wrote:

> Jeg hiver lige min kæphest op af skuffen - sådan en erstatning er
> en oplagt mulighed for et regulært udtryk. Nedenstående funktion
> klarer alle seks erstatninger i ét hug:

Skal vi lige se hvordan den klarer sig mod replace?

<%
Function AddCodes(text)
   text = replace(text,"","<b>", 1, -1, 1)
   text = replace(text,"
","</b>", 1, -1, 1)
   text = replace(text,"","<i>", 1, -1, 1)
   text = replace(text,"
","</i>", 1, -1, 1)
   text = replace(text,"","<u>", 1, -1, 1)
   text = replace(text,"
","</u>", 1, -1, 1)
   AddCodes = text
End function

Function addformat(tekst)
   dim regEx,strOut
   set regEx = New regExp
   regEx.IgnoreCase = True
   regEx.Global = True
   regEx.Pattern = "\[(/?[biu])\]"
   strOut = regEx.replace(tekst, "<$1>")
   set regEx = nothing
   addformat = strOut
End Function


text = "ablablablablablahey[u]mere[/u]blablabla"


antal = 10000

start = Timer
For i=0 To Antal
   text2 = AddCodes(text)
Next
tid1 = Timer - start


start = Timer
For i=0 To Antal
   text2 = addformat(text)
Next
tid2 = Timer - start

Response.Write "Replace: " & tid1 & "<br>RegExp: " & tid2 & "<br>"
Response.Write "Replace er " & CInt(tid2/tid1) & " gange hurtigere end
regexp :)"
%>


Det giver på min maskine:

Replace: 0,28125
RegExp: 3,609375
Replace er 13 gange hurtigere end regexp :)

Jens Gyldenkærne Cla~ (18-02-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-02-06 23:10

jamen skrev:

> Skal vi lige se hvordan den klarer sig mod replace?

[snip]

> text =
> "ablablablablablahey[u]mere[/u]blablabla[b
> ][/b]"

Replace er hurtigst ved korte tekster, men resultatet er ikke det
samme hvis du lader funktionen arbejde på en længere tekst.

Med inddata på ca. 5500 tegn og ca. 800 erstatningsforekomster får
jeg følgende forholdstal (baseret på 10000 kørsler):

Replace: 6,328125
RegExp: 4,78125

Samme grunddatamængde, med ganske få erstatningsforekomster (ca.
3500 tegn, 10 erstatningsforekomster) giver følgende resultat:    

Replace: 4,140625
RegExp: 4,46875

- hvor replace altså stadig er hurtigst, men forskellen er ret
lille.

Oprettelsen af et regex-objekt er dyr, men det er til gengæld mere
effektivt i selve erstatningen. Men man skal op i ret store
datamængder før man får en performancegevinst.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste