Nu har jag inget svar på problemet men att ställa upp massa kod som
string hej = hej.Funktion()
är inte effektivt då det skapas en ny objekt varje gång. Kolla på System.Text.StringBuilder klassen i så fall
5 svar · 427 visningar · startad av CatZ
Har inte riktigt fattat det där med regexp och .net! Kan man också använda sin pattern till att ta bort otillåtna tecken automatiskt?
Det hela gäller en customvalidator i för vb. Alltså hittar den några otillåtna tecken vill jag ta bort dem.
RegExp.Replace(input, "pattern", output)
mitt problem är att det pattern jag har för att matcha inte vill fungera med replace. Låt oss säga att jag söker en match med
^[a-zA-Z0-9]+$
Hur skulle jag kunna få samma mönster att helt enkelt ta bort otillåtna tecken?
Har lite problem då vi ska söka i databasen efter något ledigt (AutoPostBack) och då måste jag ta bort otillåtna tecken innan jag söker annars går det galet.
Har löst det så länge med följande kod. Tyvärr känns den både klumpig och ful.
Function SQLEncode(ByVal myString As String)
myString = Replace(myString, "'", "")
myString = Replace(myString, "!", "")
myString = Replace(myString, "?", "")
myString = Replace(myString, "*", "")
myString = Replace(myString, "&", "")
myString = Replace(myString, "^", "")
myString = Replace(myString, "%", "")
myString = Replace(myString, "$", "")
myString = Replace(myString, "~", "")
myString = Replace(myString, "`", "")
myString = Replace(myString, ")", "")
myString = Replace(myString, "(", "")
myString = Replace(myString, "=", "")
myString = Replace(myString, "\", "")
myString = Replace(myString, "|", "")
myString = Replace(myString, ";", "")
myString = Replace(myString, ":", "")
myString = Replace(myString, "<", "")
myString = Replace(myString, ">", "")
myString = Replace(myString, " ", "")
myString = Replace(myString, ",", "")
myString = Replace(myString, ".", "")
myString = Replace(myString, "[", "")
myString = Replace(myString, "]", "")
myString = Replace(myString, "{", "")
myString = Replace(myString, "}", "")
myString = Replace(myString, "/", "")
myString = Replace(myString, """", "")
myString = Replace(myString, "#", "")
myString = Replace(myString, "@", "")
myString = Replace(myString, "å", "")
myString = Replace(myString, "¨", "")
myString = Replace(myString, "ä", "")
myString = Replace(myString, "ö", "")
myString = Replace(myString, "¤", "")
myString = Replace(myString, "Å", "")
myString = Replace(myString, "Ä", "")
myString = Replace(myString, "Ö", "")
myString = Replace(myString, "´", "")
myString = Replace(myString, "+", "")
SQLEncode = myString
End Function
Nu har jag inget svar på problemet men att ställa upp massa kod som
string hej = hej.Funktion()
är inte effektivt då det skapas en ny objekt varje gång. Kolla på System.Text.StringBuilder klassen i så fall
P skrev:
Nu har jag inget svar på problemet men att ställa upp massa kod som
string hej = hej.Funktion()är inte effektivt då det skapas en ny objekt varje gång. Kolla på System.Text.StringBuilder klassen i så fall
Tack för att du påpekar det uppenbara! :P Det är ju därför jag vill använda regexp.replace har ändrat till följande kod men den är ju inte alls dynamisk då jag vill säga tillåt alfanumeriska värden och - & _ men _ / - ska inte tillåtas först eller sist.
Helt klart ett fall för regexp och inte
Public Shared Function SQLEncode(ByVal myString As String)
Dim sb As New StringBuilder(myString)
sb.Replace("'", "")
SQLEncode = sb.ToString
End Function
Märker skillnaden dock, det går mycket fortare om man pangar på med en sablans massa konstiga tecken.
Varför inte använda en RegularExpressionValidator från början som ser till att bara släppa igenom godkända tecken.
<asp:RequiredFieldValidator
Id="RequiredFieldValidator2"
ControlToValidate="TextBox1"
ErrorMessage="*"
runat="server"/>
<asp:RegularExpressionValidator
Id="RegularExpressionValidator1"
ControlToValidate="TextBox1"
ValidationExpression="^[a-zA-Z0-9]+$"
ErrorMessage="You are a very very evil person, aren't you."
runat="server"/>
Du läste nog inte hela meddelandet, det fungerar som sagt utmärkt att kolla med det, men jag skulle vilja göra ett mönster som tar bort otillåtna tecken eftersom en sökning görs mot databasen och jag har ingen möjlighet att validera den kontrollen å det viset innan sökningen.
Testa med detta eller något liknande.
[^a-zA-Z0-9]+