Jag undrar hur man fixar ett Replacement i ASP som går igenom ett form, just nu så har jag gjort 3 Replacement på varje sträng vilket är lite drygt. ÖÖÖhh vad menar du egentligen?? Menar du att du vill ha någon form av formatering på strängar som är effektivare än att just ha tre olika replace?? I fall ett JA. asså jag har ju en sträng som heter username, en som heter password osv He he: det beror på... Fick reda på ett annat sätt man kan göra påReplacement för flera strängar
Jonathan Petersson
www.garnser.comSv: Replacement för flera strängar
Om så är fallet så kan jag tala om att du inte kan göra det mycket effektivare genom egen programmering.
Jag antar t ex att du gör något i stil med:
<code>
Dim s
s = request.Form("namn")
s = Replace(s, "<", "")
s = Replace(s, ">", "")
</code>
Vad jag skulle göra är att gruppera de olika valideringarna och göra en mer strömlinjeformad kod genom att gå igenom formuläret med en For..Each och då göra en replace i loopen beroende på vad som ska ersättas:
<code>
Dim s
For each s in Request.Form
Request.Form(s) = replace(Request.Form(s),"<","")
Next
</code>
När denna loop gått igenom har du tagit bort alla "<" i formuläret.
Andra typer av valideringar följer dock andra mönster med grunden för att stega igenom formuläret är det samma.
//Mikael Sand
"Nu med Ånge™"Sv: Replacement för flera strängar
I fall två NEJ
Fall två loopar igenom alla fält i formuläret och sparar det ändrade värdet i samma fält.
Fall ett kan byggas ut till att fler variabler definieras och andra värden från formuläret lagras i dem.
Fall två är mer dynamiskt eftersom du kan återanvända dem på ett bättre sätt på fler sidor, dä du behöver ta bort saker ur inmatade stängar.
Klart så eller behöver du mer hjälp??
//Mikael Sand
"Nu med ÅNGE™"Sv: Replacement för flera strängar
hur går då denna igneom alla dem??Sv: Replacement för flera strängar
Men i alla fall jag kan visa med båda mina exempel. Låt oss t ex säga att du vill ta bort ev mellanslag och dessutom tecknet "#" (varför nån nu skulle skriva det?).
Ex 1: Variabler
<code>
dim usr, pass
usr = Request.Form("username")
pass = Request.Form("password")
' ta bort mellanslag och #-tecken
usr = replace(replace(usr, " ", ""), "#","")
pass = replace(replace(pass, " ", ""), "#","")
</code>
Ex 2: Loop
<code>
Dim str
for each str in Request.Form
with Request
.form(str) = replace(replace(.Form(str), " ", ""), "#","")
End Request
next
' När loopen är slut finns bara "rensade" värden i formuläret och de
' kan fortsätta användas.
</code>
Som du ser är exempel 2 lite mer dynamiskt eftersom du kan använda den på andra formulär och fler fält än bara två samt att du slipper deklarera fler variabler.
Ett varningens finger dock eftersom det ju kan avar så att vissa fält ska FÅ innehålla t ex mellanslag och då får du skriva en if-stas som håller koll på att detta fält inte ska rensas.
Vad gäller variablen str i ex två så kommer den innehålla namnet på fältet i formuläret, vilket för att den kan användas som index.
Har det klarnat nu??
//Mikael Sand
"Nu med Ånge™"Sv: Replacement för flera strängar
Function Repl(strData)
Dim c
Dim i
Dim strResult
For i = 1 To Len(strData)
c = Mid(strData, i, 1)
If c = """" Then
c = "0"
Else if c = "'" Then
c = "1"
Else if c = "=" Then
c = "2"
End If
strResult = strResult & c
Next i
Repl = strResult
End Function
username = Repl(Request.Form(”username”))
password = Repl(Request.Form(”password”))
fast an någon anledning så säger min server att Next = i ä expected end