webForumDet fria alternativet

Bryta sträng och ord!

ASP

16 svar · 606 visningar · startad av paddan

Medlem sedan dec. 2002299 inlägg
Frågan#1

Hej!
Jag har en gästbok där jag vill att strängen ska kapas efter 30 tecken eller efter närmaste hela ord.
Koden nedanför gör detta! Men jag vill att resten av strängen ska skrivas ut under.
använder jag mig utav right functionen så blir det det bara bra om den avklippta strängen är precis 30 tecken.

			
 <% 			
function korta(myString,myLenght) 
If not Len(myString) >= myLenght Then 
Response.write myString 
else 
antal = myLenght 
keyWords = split(myString," ") 
longString = 0 
For Each Word in keyWords 
longWord = Len(word) 
longString = cint(longString + longWord) 
if longString >= antal then 
Response.Write Word & "..." 
Exit For 
else 
Response.Write Word & " " 
end if 
Next 
End if 
End function 
				
%>

<%
med = Recset("med") 
Response.write korta(med,30) 
%>

Några förslag?
Mvh Martin

Medlem sedan maj 200010 687 inlägg
#2

Vänligen indentera din kod. Den koden är oläsbar.

Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

Använd Mid() för att börja att skriva ut i en sträng.
http://www.devguru.com/technologies/vbscript/13951.asp
Varför har Devguru ändrat sina länkar?

Du löser problemet med var du ska börja genom att spara undan den positionen i en variabel.

Medlem sedan dec. 2002299 inlägg
#4

oki...men var hittar jag den posistionen i functionen??

Mvh Martin

Medlem sedan dec. 200012 464 inlägg
#5

Kan du exemplifiera hur du vill att det skall se ut! Skall det bli mer än två rader om det är mer än 60 tecken?

Sen så bör du inte använda response.write i en funktion. En funktion skall enbart returnera ett värde och inte ha några sidoeffekter.

Medlem sedan dec. 2002299 inlägg
#6

Hej!
Oki...fixat det där med att inte ha response.write i functionen...
Men såhär ska det vara:
Man skriver ett meddelande, då ska dem första tex 20 tecknen bli rubrik, <h1> Då vill jag att den ska kapa efter 20 tecken eller närmaste hela ord. Sen vill jag att resten av texten ska skrivas ut i en <p> tagg.

Mvh Martin

Medlem sedan dec. 200012 464 inlägg
#7
sub korta(myString,myLenght) 
   dim s,k,i,r
   k = split(myString," ") 
   s = ""
   r = false
   For each w in k
        if  len(s) >= myLength and not r then 
           response.write "<h1>" & s & "</h1>" 
           s = "" 
           r = true
       end if
       if len(s) > 0 then s = s & " "
       s = s & w
   Next
   if len(s) > 0 then response.write "<p>" & s  & "</p>"
End sub
Medlem sedan dec. 19996 721 inlägg
#8

OBS! Liten felstavning av ett argument ovan.

Medlem sedan dec. 2002299 inlägg
#9

vilket argument...!????

Medlem sedan juni 200032 967 inlägg
#10

Ett är rättstavat, det andra är felstavat:

sub korta(myString,myLenght)
Medlem sedan dec. 2002299 inlägg
#11

Så här långt har jag kommit:

	
sub korta(myString,myLenght) 
dim s,k,r,w
k = split(myString," ") 
s = ""
r = false
For each w in k
if  len(s) >= myLenght and not r then 	
response.write "<h1>" & s & "</h1>" 
s = "" 
r = true
end if
if len(s) > 0 then s = s & " "
s = s & w

Next
if len(s) > 0 then response.write "<p>" & s  & "</p>"
End sub

<%
med = Recset("med")
response.write korta(med,30)
%>

Felmeddelande:
Type mismatch: 'korta'
Och det pekar på koden med med repsone.write kort(med,30)

Vad kan vara felet??

Medlem sedan dec. 19996 721 inlägg
#12

"korta" är en sub, inte en function

Byt

response.write korta(med,30)

till

korta med,30

Medlem sedan juni 200032 967 inlägg
#13
  1. Du hade gärna fått välja den korrekta stavningen, myLength.
  2. Indentera koden. http://www.webforum.nu/showthread.php?s=&postid=1080452#post1080452
  3. En sub returnerar ingenting, därför kan du inte skriva ut i anropet.
Medlem sedan dec. 20003 887 inlägg
#14
sub korta(myString,myLength) 
  dim s,k,r,w

  k = split(myString," ") 
  s = ""
  r = false

  For each w in k
    if  len(s) >= myLength and not r then 	
      response.write "<h1>" & s & "</h1>" 
      s = "" 
      r = true
    end if

    if len(s) > 0 then s = s & " "
    s = s & w
  Next

  if len(s) > 0 then response.write "<p>" & s  & "</p>"
End sub

<%
call korta( Recset( "med" ), 30 )
%>

red.
Jag skyller på att jag fick telefon under tiden. :OO

Medlem sedan maj 200010 687 inlägg
#15

Engine^: Du missade både 1:an och 3:an.
Sen så skulle jag rekommendera riktiga tabbar. Har man en vettig edtior så kan man där bestämma hur många tecken en tab ska motsvara. :)

Medlem sedan dec. 20003 887 inlägg
#16

Erik Juhlin skrev:

Engine^: Du missade både 1:an och 3:an.
Sen så skulle jag rekommendera riktiga tabbar. Har man en vettig edtior så kan man där bestämma hur många tecken en tab ska motsvara. :)

Aningen förvirrad idag igen. Redigerade till det.

Somliga ställer in sin editor att använda tab-tecken för indentering istället för mellanslag.

Medlem sedan dec. 2002299 inlägg
#17

Tack så hemskt mycket för all hjälp...jag har faktiskt lärt mig en hel del på detta...!

Mvh Martin!

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)