13
Tags:
asp
Skrevet af
Bruger #3565
@ 30.04.2003
Indledning:
I denne artikel går jeg igennem brugen af Replace og Split(Arrays), samt brugen af funktioner.
Imens jeg skrev denne artikel dukkede der nogle enkle forklaringer på andre ting også så det må du tage med som en bonus
Til sidst vil jeg illustrerer brugen i et link/smiley/text konverter.
Der er ingen fuldkommen kode her, blot et eksempel på hvordan det kan se ud.
Indholdsfortegnelse:
Brugen af Replace
Brugen af Split (og kort om Arrays)
lav en Funktion (Function)
Meget kort om include
brug en funktion
Eks. på at bruge det hele i et link/smiley/text konverter
Replace:
Lidt om Replace:Replace bruges som navnet også hentyder, til at "bytte noget ud" i f.eks en tekst streng
Syntax:Replace(strng, find, replacewith, [start], [count], [compare])
Forklaring:strng er den tekst som du vil udføre en Replace i
find det du vil søge efter og "bytte ud"
replacewith det du vil "bytte ud" med
[start] er hvornår den skal begynde med at "bytte ud" hvis ikke nævnt antages den til at være 1 og angives som helt tal
[count] er hvor mange gange den skal "bytte ud", hvis ikke andet er angivet antages værdien -1, og betyder at alle ord efter [start] "byttes ud" igen skal denne angives i helt tal
[compare] er den metode som Replace skal arbejde ud fra, binær(0) eller tekst(1)
bemærk at parameter omkredset af [] ikke er nødvendige.Et eksempel:vi vil gerne have at der står "KL:" imellem datoen og klokkeslettet
strng = "24-5-2002 22:05:23"
Replace(strng," ", " KL: ")
Response.Write = "d. " & strng & "gik jeg i seng"
Output: d. 24-5-2002 KL: 22:05:23 gik jeg i seng
det sker:
i variablen søges der efter et mellemrum (" "), dette mellem rum "byttes ud" med KL: (" KL: ")
Split og Array
kort om Array:for at forstå Split er vi lige nød til hurtigt at forklare det kort hvordan Array fungere, da Split funktionens resultat bliver lagt i en Array
Et array er en variabel med X antal dimensioner der kan tilgås vha. en index property. F.eks. MyArray(5) vil tilgå det sjette element i arrayet, eftersom de er nul baserede
Eks.
dyr(0) = "elefant"
dyr(1) = "abe"
dyr(2) = "flodhest"
sådan kunne et Array se ud.
når du så udskriver, er det bare at skrive dyr(i) hvor i er nummeret på det output du vil hente.
Vi kan også udskrive dem alle sammen med en "For lykke"
Her kunne det være dejligt at vide hvor mange informationer der gemmer sig i vores Array, og dertil har vi kommandoen Ubound med syntaksen Ubound(Array)
Et eks.
For i = 0 to Ubound(dyr)
response.write dyr(i) & "<br>"
Next
Output:
elefant
abe
flodhest
Så lad os nu hurtig og smertefrit springe videre til Split
Kort om SplitSplit bruges til at dele en streng op, bl.a. via komma separering.
Eks, du har et søgesystem hvor bruger skal indtaste deres søgeord separeret med komma, for at du kan bruge denne output tekst som brugeren skriver til noget vil du være nød til at del strengen op, dette gøres via Split.
Lad os smide noget kode på.
'vi bruger bare dyrene igen
soegeOrd = "elefant,abe,flodhest"
'den deler vi så lige op så vi for den i et array, vi kalder det bare dyr igen
dyr = Split(soegeOrd,",")
'nu har vi så en Array kaldet dyr og den fungere på helt samme måde som i vores eks. under Array.
Funktioner
kort om funktionerNu skal vi til et interessant emne, nemlig funktioner. dette vil kunne spare dig for en masse pukkelryg arbejde med at gentage dig selv om og om igen i dine koder.
Med funktioner kan du lave en handling før du bruger den også kalde den når du skal bruge den.
Syntax
Function FunctionName(data1,data2,osv)
Dette er ikke nemt at beskrive så Lad os prøve med et eksempel
lad os sige du har lavet en masse replacer der skal filtrere bande ord væk fra texten på din side så derfor har du lavet en masse "Replacer" som gør det, men dit problem er bare at dette skal du gøre 100 af steder på din side, og dermed skal koden være der 100 af steder, men ikke mere.
det du gør:Du laver en ny side lad os for at være smart kalde den for functions.asp den skal så indeholde din funktion, som skal filtrere bandeord, og derefter inkludere du den bare på alle de sider den skal være på.
vi laver noget kode:
Function Fwords(Text)
Text = Replace(text, "fuck", "f**k")
Text = Replace(text, "shit", "puha")
'og her ville så være et hav af andre
Fwords = Text
Function End
nu skal vi bare inkludere siden i et andet dokument, og prøve at bruge funktionen
Include:
der er kun meget lidt at forklare om include, og det er at den inkludere en fil i et asp dokument, dog er der en vigtig ting man skal vide, og det er at den skal være uden for asp tags (<% %>
<!--#include file="fil.asp" -->
<%
'her kommer så din asp kode
%>
Brug Funktionen
Lad os bare for en gangs skyld smide koden på i en fart.
<!--#include file="functions.asp" -->
<%
'streng med bandeord
strng = "fuck din shit af en tomat"
'også kommer funktionen i brug
Response.Write Fwords(strng)
%>
Output: f**k din puha af en tomat
link/smiley/text konverter
Ja nu har jeg jo lovet at her ville være noget kode til at lave en link/smiley/text konverter, dog er det ikke fuldendt, og kun beregnet som en inspirations kilde til hvordan dette kunne laves.
derfor er her også kun koden til det og jeg vil ikke gå i dybden om hvordan og hvorfor det virker, ud over de ovenstående beskrivelser.
Se nu godt efter
' jeg har kaldt min funktion for txtConvert (hvor opfindsomt ikke?).
' der er to data felter som indeholder henholdsvist teksten som skal konverteres
' og en som skal fortælle mig om der skal fjernes html eller ej.
Function TxtConvert(Text, HTML)
' vi starter med at fjerne HTML´en hvis det er nødvendigt
If HTML = "no" then
txt = replace(txt,"<","<")
End if
' her efter laver vi breaks om til HTML breaks "<br>"
txt = Replace(txt, vbcrlf," <BR> ")
' så deler jeg alle ord ved mellemrum
Atxt = Split(txt, " ")
' og finder ud af hvor mange ord der er i det hele
Anr = Ubound(Atxt)
' Nu laver vi alle former for url'er osv om til HTML links.
' bemærk jeg bruger en Do while løkke, hvad den konkrete forskel er ved jeg faktisk ikke
' men er sikker på en vaks bruger lige vil tilføje det i kommentere
Do While i < Anr + 1
If left(Atxt(i), 6) = "ftp://" then
utxt = utxt & "<a href='" & Atxt(i) & "' target='_new'><u>" & Atxt(i) & "</u></a> "
ElseIf left(Atxt(i), 7) = "http://" then
utxt = utxt & "<a href='" & Atxt(i) & "' target='_new'><u>" & Atxt(i) & "</u></a> "
ElseIf left(Atxt(i), 4) = "www." then
utxt = utxt & "<a href='http://" & Atxt(i) & "' target='_new'><u>" & Atxt(i) & "</u></a> "
ElseIf Ubound(split(Atxt(i), "@")) = 1 then
Amail = split(Atxt(i), "@")
If Ubound(split(Amail(1), ".")) >= 1 then
utxt = utxt & "<a href='mailto:" & Atxt(i) & "'><u>" & (Atxt(i) & "</u></a> "
Else
utxt = utxt & FixLength(Atxt(i)) & " "
End If
Else
utxt = utxt & FixLength(Atxt(i)) & " "
End If
i = i + 1
Loop
' lad os nu få lavet nogle smileys om.
utxt = replace(utxt, ":)", "<img src='/smileys/smiley.gif'>")
' og her er det bare at fortsætte i en og samme dur
' også skulle vi havde en fungerende converter så lad os få lukket og slukket for funktionen
TxtConvert = utxt
End Function
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (8)
Ups, i konverteren er bruger jeg funktionen FixLength, den eksistere altså ikke i asp, men er en funktion jeg har i mit komplette script. i kan da lige få koden på den
men jeg gider altså ikke forklare den
Function FixLength(Message)
x = 0
if len(Message) > 100 then
For x = 1 To Len(Message) Step 50
Nstring = Nstring & Mid(Message, x, 50) & Chr(13)
Next
Else
Nstring = Nstring & Message
End If
FixLength = Nstring
End Function
howsa, sorry kom vist til at trykke refresh.. det var ikke med vilje
-Nicenice
' <br> <a href="#">her</a>
Nice artikel
- Fjernede lige den ene kommentar fra forfatteren, som han omtaler. Samme post var der to gange.
Egeriis, mange tak..
Til det med do while: Forskellen kan ikke virke så logisk pga. måden du skriver det på i VB(Script), men i f.eks. PHP ser syntaksen sådan ud:
do {
} while(condition);
altså gør {
} imens(betingelse er opfyldt);
det bemærkelses værdige er at "while" delen sidder i bunden og dermed også testen af om scriptet skal køres. Derfor er forskellen den at en do-while løkke altid vil køre 1 gang. Da den først tester efter hvert gennemløb og ikke inden hvert gennemløb.
Tak det var lige det jeg sad og manglede. Det er fedt
;-)
Funktionen virker ikke...
Du skal være
logget ind for at skrive en kommentar.