webForumDet fria alternativet
Logga in / Bli medlem

Del av variabel

ASP

19 svar · 270 visningar · startad av bagera

Medlem sedan jan. 2001126 inlägg
Trådstart#1

Kan man hämta ut delar av text från en variabel?

om texten ser ut så här:

kalle tittar [hej] på tv [hoj] och är glad

och jag vill hämta bara "på tv", går det?

Medlem sedan mars 20014 214 inlägg
#2

visst går det

<%
dim string
string = "kalle tittar [hej] på tv [hoj] och är glad"
omgjord = Mid(string,23,3)
Response.write omgjord
%>
Medlem sedan jan. 2001126 inlägg
#3

Om jag inte vet värdet i variabeln då?
vad det än står i variablen så vill jag plocka ut allt mellan [hej] och [hoj].

Medlem sedan feb. 20012 412 inlägg
#4

Hej!

Du kan använda split() om du har en känd avgränsare.

mvh Jörgen :)

Medlem sedan dec. 19998 577 inlägg
#5

Du får helt enkelt använda dig utav Regular Expression för detta.

Medlem sedan jan. 2001126 inlägg
#6

jag har tittat lite på split men regular expression verkar roligare :)

än så länge har jag:

<%
strTarget = "test testing testar [hej] testo testi [hoj]"

set objRegExp = New RegExp
objRegExp.Pattern = "[hej] *"
objRegExp.IgnoreCase = false
objRegExp.Global = true
set colMatches = objRegExp.execute(strTarget)

for each Match in colMatches

response.write "funnen på " & Match.FirstIndex & ". "
response.write "värdet är '" & Match.value & "'.<br>"
next 
%>

och får ut:

Match.FirstIndex
Match.value

men hur kan jag göra texten emellan till en variabel?

Medlem sedan jan. 2001126 inlägg
#7

Börjar haja lite här nu men det funkar ju inte.
Ska inte regular expression funka i vb5.0?
Är det nåt fel på detta?

<%
hej ="[hej]www.hej.se[/hej] fgdfgdfg dfg df gdfg"

Function hejpryl(text)
Dim objRegExp	
Set objRegExp = New RegExp	
objRegExp.Pattern = "\[hej=(.*?)\](.*?)\[\/hej\]"	
objRegExp.IgnoreCase = True	
objRegExp.Global = True	
hejpryl= objRegExp.Replace(text,"<a href=$1>$2</a>") 
Set objRegExp = Nothing
hejpryl = text
End Function
%>
<%=hejpryl(hej)%>
Medlem sedan dec. 19998 577 inlägg
#8

Vad är det som blir fel? Felmeddelande?

Medlem sedan jan. 2001126 inlägg
#9

Så här ser det ut

ASPError.ASPCode =
ASPError.Number = -2146823270 (0x800A139A )
ASPError.Source =
ASPError.Category = Microsoft VBScript runtime
ASPError.File = /Forum/test/test7.asp
ASPError.Line = 9
ASPError.Column = -1
ASPError.Description = Unexpected quantifier

Medlem sedan dec. 19998 577 inlägg
#10

Det är lite olika syntax mellan de olika vbs-versionerna, testa att uppgradera till 5.5 eller 5.6.

Medlem sedan jan. 2001126 inlägg
#11

Har letat som en galning efter 5.5 men kan inte hitta den.
någon som vet var?
microsofts djungel knäckte mig idag :(

Medlem sedan juni 200032 967 inlägg
Medlem sedan jan. 2001126 inlägg
#13

Har läst en hel del nu och provat hur mycket som helst det funkar bättre nu efter uppgradering till 5.5 (tack!!), men jag kan tametusan inte begripa det endå.

kan någon förklara för mig hur man får ut värdet mellan [hej] och [/hej].
har pulat med olika patterns hela natten.

jag har kommit så långt att jag kan replacea [hej] och [/hej] men jag vill ju ha med det emellan också.
och vad är det som gör värdet till en
$1 eller $2?

Medlem sedan okt. 200112 inlägg
#14

Så här kanske:

Dim intStartPos, intEndPos, strTemp, strResult
strTemp = "[hej]text mellan taggar[/hej]"
intStartPos = inStr(1, strTemp, "[hej]")
intEndPos = inStr(1, strTemp, "[/hej]")
strResult = mid(strTemp, intStartPos+5, intEndPos-(intStartPos+5))

Response.Write(strResult)

//Micke

Medlem sedan jan. 2001126 inlägg
#15

ja det funkar ju men jag vill kunna göra ett pattern som gör samma sak :)

så här:

Set re = New RegExp
re.Global = True
re.IgnoreCase = True
re.Pattern = "\[url=(.*?)\](.*?)\[\/url\]"
parser = re.Replace(parser,"<a href=$1>$2</a>")

men den här funkar inte, å jag förstår inte riktigt vad som händer trots vides exelenta artikel.

Medlem sedan okt. 200112 inlägg
#16

Vad den gör är att den tar den text som finns i start taggen och stoppar i href. Sedan tar den den text som finns mellan taggarna och stoppar i a-taggen.

Lite mer komplett blir det såhär:

Set re = New RegExp
parser = "kalle"
re.Global = True
re.IgnoreCase = True
re.Pattern = "\(.*?)\[\/url\]"
parser = re.Replace(parser,"<a href=$1>$2</a>")
Response.Write(parser)

//Micke

Medlem sedan okt. 200112 inlägg
#17

Oops, så här blir bättre:

Set re = New RegExp
parser = "[url="http://www.kalle.com"]kalle[/url]"
re.Global = True
re.IgnoreCase = True
re.Pattern = "\[url=(.*?)\](.*?)\[\/url\]"
parser = re.Replace(parser,"<a href=$1>$2</a>")
Response.Write(parser)

//Micke

Medlem sedan okt. 200112 inlägg
#18

Tredje gången gillt:

Set re = New RegExp
parser = "[url="http://www.kalle.com"]kalle[/url]"
re.Global = True
re.IgnoreCase = True
re.Pattern = "\[url=(.*?)\](.*?)\[\/url\]"
parser = re.Replace(parser,"<a href=$1>$2</a>")
Response.Write(parser)

:-)

Medlem sedan okt. 200112 inlägg
#19

Äsch, kolla <A HREF="http://bulow.darktech.org/test.asp"" TARGET=_blank>här</A> istället.

Medlem sedan jan. 2001126 inlägg
#20

Nu släppte det :)

så här ville jag ju ha det!!

<%
texten = "[*url]www.kalle.com[/url*]"

(utan stjärnor naturligtvis ;)

function pars(parser)
Set parsing = New RegExp
parsing.Global = True
parsing.IgnoreCase = True
parsing.Pattern = "\[url\](.*?)\[\/url\]"
parser = parsing.Replace(parser,"<a href=$1>$1</a>")
pars = parser
end function
%>
<%=pars(texten)%>

Tackar alla för hjälpen!!

270 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)