webForumDet fria alternativet

Hitta ett värde i en text och använda det till en funktion

ASP

6 svar · 373 visningar · startad av Klingstedt

Medlem sedan okt. 200145 inlägg
Frågan#1

Ja, hur hittar jag ett speciellt värde i en text. Som typ..

<id>8</id>

Genom att 8 står mellan id-taggarna, så vill jag att detta värde skall användas till en funktion så att det blir som detta..

funktion(textvarde)

I variabeln textvärde vill jag ha den siffra som står i mellan de två ID-taggarna. I detta fall siffran 8.

Hur gör jag?

Medlem sedan jan. 20032 285 inlägg
#2

Du kan använda RegExp:

strText = "Hejsan... <id>8</id> hoppsan..."

With New RegExp
  .IgnoreCase = True
  .Pattern = "<id>.+</id>"

  For Each objMatch In .Execute(strText)
    strFoo = Funktion(Mid(objMatch.Value, 5, Len(objMatch.Value) - 9))
  Next
End With

Response.Write(strFoo)
Medlem sedan okt. 200145 inlägg
#3

sebbe, tack! Nu får jag äntligen ut värdet.. men..

Eftersom det är annan text jag också vill ha ut.. i ditt exempel vill jag ha ut

"Hejsan... (vad som blir av id 8) hoppsan..."

Så en replace vore fint av <id>8</id> istället för bara skriva ut vad som blir av <id>8</id>.

Annars fungerar din kod bra :)

Medlem sedan jan. 20032 285 inlägg
#4

Nu förstår jag inte riktigt vad du menar, men kanske något sånt här?

strText = "Hejsan... <id>8</id> hoppsan..."

With New RegExp
  .IgnoreCase = True
  .Pattern = "<id>(.+)</id>"

  strText = .Replace(strText, "($1)")
End With

Då kommer det istället för <id>8</id> stå (8), sen kan du ju byta ut den mot vad du vill.

Medlem sedan okt. 200145 inlägg
#5

Jag skall testa!

Medlem sedan okt. 200145 inlägg
#6

Blev lite fel.

Content = innehållet i filen

showforumtopic är en funktion, som i detta fall skall skicka vidare 8:an till funktionen.. funktionen i sig fungerar..

Felmeddelande:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'replace'

Den kod jag försökte köra var din med lite modifiering:

With New RegExp
  .IgnoreCase = True
  .Pattern = "<id>.+</id>"

  strFoo = .Replace(content, "($1)", showforumtopic("($1)"))
  
End With

content = strFoo
Medlem sedan jan. 20032 285 inlägg
#7
With New RegExp
  .IgnoreCase = True
  .Pattern = "<id>(.+)</id>"

  content = .Replace(content, "$1")
  content = showforumtopic(content)
End With

Sen behöver du inte den understa raden i din kod heller. :)

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)