|
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | 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)
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | 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)
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | 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)
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | 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)
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | 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)
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | 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 =
> " ablablablablabla hey[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
| |
|
|