webForumDet fria alternativet

replace - wordleft

6 svar · 219 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#1

Hej jag skulle vilja kombinera dessa saker i en och samma presentation, hur gör man detta lättast månne??


Function WordLeft(strText, intNoOfWords)	
Dim arrText, strippedText, I	
arrText = Split(strText, " ")	
If UBound(arrText) => intNoOfWords Then		
For I = 0 To (intNoOfWords - 1)			
If i = (intNoOfWords - 1) Then 				
strippedText = strippedText & arrText(i) & "..."			
Else				
strippedText = strippedText & arrText(i) & " "			
End if		
Next	
Else		
strippedText = strText	
End If	
WordLeft = strippedText
End Function
%>

presenteras med:

<%Response.write wordleft(RS("text"),5)

Vill kombinera med:

      <%response.write replace(rs("text"),Query ,"<font style='BACKGROUND-COLOR: #33CCFF'>" & Query & "</font>",1,-1,vbTextCompare)%>

MVH

//Jesper
Detta svar fick jag ifrån Erik Juhlin:

<%response.write wordleft(replace(rs("text"),Query ,"<font style='BACKGROUND-COLOR: #33CCFF'>" & Query & "</font>",1,-1,vbTextCompare))%>

eller ännu bättre:


Function QueryMarked(str, sQuery)
replace(str, sQuery , "<font style='BACKGROUND-COLOR: #33CCFF'>" & Query & "</font>", 1, -1,vbTextCompare)
End Function
response.write wordleft(QueryMarked(rs("text"),Query))'************ RAD 151 ******

MEN DÅ DYKER DETTA UPP:
Microsoft VBScript compilation error '800a03ea'
Syntax error

/sok/search.asp, line 151

Function QueryMarked(str, sQuery)
^
Står det då!
Det som inte heller finns med i koden är ju siffran som anger meningens längd i ord.

Alltså:


<%Response.write wordleft(RS("text"),5)'********* 5=meningens längd i ord *************

MVH
//Jesper

@ndersMedlem sedan juni 200032 969 inlägg
#2

Hur ser koden ut runt funktionen QueryMarked?

Du har den inte i en loop eller så?

Jesper TMedlem sedan nov. 20017 144 inlägg
#3

Jo, såklart den har en loop
Och skriver jag wordleft respektive replace var och en för sig funkar detta finfint!
Problemet är när du lägger ihop dem.
/Jesper

@ndersMedlem sedan juni 200032 969 inlägg
#4

Du kan inte ha funktionen i en loop. Funktionen lägger du utanför, och kallet till funktionen har du i loopen.

Mvh,

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

Nej, detta ligger i loopen (funkar bra)

<%response.write replace(rs("text"),Query ,"<font style='BACKGROUND-COLOR: #33CCFF'>" & Query & "</font>",1,-1,vbTextCompare)%>

Men jag vill också lägga till:

<%Response.write wordleft(RS("text"),5)%>

så att texten både kortas av och markeras med sökt ord.
Alltså, båda fungerar separat i loopen men inte tillsammans.

MVH Jesper

solbulleMedlem sedan mars 20015 287 inlägg
#6

Hm...

<%response.write replace(wordleft(RS("text"),5)
,Query ,"<font style='BACKGROUND-COLOR: #33CCFF'>" & Query & "</font>",1,-1,vbTextCompare)%>

Eller har jag missat något?

------------------
/solbulle
Hemmabio | Spelautomater | The Who

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Äh, jag gjorde så här istället:

<%response.write replace(left(rs("description"),70),Query ,"<font style='BACKGROUND-COLOR: #33CCFF'>" & Query & "</font>",1,-1,vbTextCompare)&"..."%>

Det löste också mitt strul med att kortare meningar inte syntes i wordleftvarianten. Ooops, här blir det visst ett annat problem....gissa!
Tack ändå!
;)

130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)