webForumDet fria alternativet

Räkna antal gånger jag reg.exp träffar.

ASP

14 svar · 448 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

Hej! Jag skulle vilja räkna hur många gånger scriptet hittar [TD] ... [/TD] i en sträng. Alltså varje gång en en replace gör ökar antalet träffar med 1. Hur gör man detta? Så här ser reg.exp ut nu:

objRegExp.Pattern = "\[TR\]((.|\s)*?)\[/TR\]"
strText = objRegExp.Replace(strText,"<TR>$1</TR> ")

Tack på förhand!

Medlem sedan dec. 200012 464 inlägg
#2
antal = regexp.execute(strText).count
Medlem sedan sep. 20011 722 inlägg
#3

Nu blev det svårt här :l
Får enbart fram Objekt krävs.: 'regexp'

Var är det man ska lägga in koden? Förstår inte. :r

Medlem sedan aug. 20003 575 inlägg
#4

antal = objregexp.execute(strText).count

Medlem sedan sep. 20011 722 inlägg
#5

ok, tack!
Men det var tyvärr inte det jag förväntade mig.
Det jag hade tänkt mig är att varanan tabellrad skulle ha olika färg. Tänkte att man efter varje gång ett [TR] ... [/TR] hittades skulle totalsumman adderas med ett och och sedan beroende på om det blev ojämt eller jämt tal tilldela TR-taggen en "ojämn" eller "jämn" bakgrundsfärg.

Men req.exp verkar ju inte loppa igenom texten utan replacear allt på en gång. Kan man på något annat sätt få olika bakgrundsfärger?

Medlem sedan nov. 20017 144 inlägg
#6

Då kanske du skall beskriva lite mer. Hur skall det hela visas? Var skall summan presenteras?

Medlem sedan dec. 20003 887 inlägg
#7

Nu är jag lite osäker på hur RegExp.Replace jobbar, men man skulle väl kanske kunna sätta en variabel till False och sedan switcha den i Replacen...

Dim bSwitch
bSwitch = False
.
.
.
objRegExp.Replace(strText, IIf(Eval(Not bSwitch), "<TR bgcolor=white>$1</TR>", "<TR bgcolor=black>$1</TR>"))

Jag har ingen aning om detta fungerar, men det är kanske något att fundera på.

Medlem sedan sep. 20011 722 inlägg
#8

Jesper T skrev:

Då kanske du skall beskriva lite mer. Hur skall det hela visas? Var skall summan presenteras?

Jag har i databasen text varvat med forumkod, bla [TR] som req.exp ska exventera till <TR> för att bygga rader i en tabell. Så långt fungerar allt som jag vill. Men jag skulle även vilja att varanan rad får ex. svart bakgrund och resterande vit bakgrund för att öka läsbarheten vid breda tabeller.
Sen hur det gör det spelar ingen större roll. Det där med siffror och räknare ovan var ett sett som jag trodde skulle fungera, vilket det inte gjorde.

Medlem sedan nov. 20017 144 inlägg
#9

Varför skall du räkna och vad?

Medlem sedan sep. 20011 722 inlägg
#10

Tänkte att detta skulle fungera:

 

Dim TotalTR
TotalTR = 0

objRegExp.Pattern = "\[TR\]((.|\s)*?)\[/TR\]"

TotalTR = TotalTR + 1
  If TotalTR mod 2 = 0 then
    TRbgc = "#FFFFFF"
  Else
    TRbgc = "#000000"
  End if

strText = objRegExp.Replace(strText,"<TR BGCOLOR=""" & TRbgc & """>$1</TR> ")

Men kom sedan på att reqexp inte loopar igen träff för träff utan exekverar allt samtidigt. Eller har jag fel?

Medlem sedan mars 20015 287 inlägg
#11

Nja, den loopar inte va? Men hur gick det med Engine^s kod? http://www.webforum.nu/showthread.php?s=&postid=594260#post594260

Medlem sedan sep. 20011 722 inlägg
#12

Just ja, den hade jag glömt totalt. :r
Efter lite sökning efter Iff och Eval men kunde inte hitta någon förklaring som jag förstod.
Vad betyder dessa och hur använder jag dom?

Medlem sedan mars 20015 287 inlägg
#13

Varför inte testa?

Medlem sedan sep. 20011 722 inlägg
#14

Mmm, nu haver man testat och inte mycket klokare blev man för det :|

Please solbulle! Help! :)

Medlem sedan nov. 20017 144 inlägg
#15

Eval
IIf
Alltså, om variabeln är true skall elementet vara svart i annat fall vitt. :)
Men IIf funkar inte i vbScript endast i VB

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)