Valhalla Legends Forums Archive | Battle.net Bot Development References | WildCards

AuthorMessageTime
ILurker
What is an easy way to use wildcards?
"/ban *[aC]"
March 17, 2003, 12:33 AM
Noodlez
by writing a wildcard matching function

but, since im pretty sure your not capable of that use Like

example:
[code]
dim str1 as string, str2 as string
str1 = "ilurker thinks noodlez is stupid and look here he goes helping him!"
str2 = "*stupid*"
if lcase(str1) like lcase(str2) then
msgbox "str1 matches str2"
end if
[/code]
March 17, 2003, 1:00 AM
Coltz
another way to do it, though not the best, would be to use the vbtextcompare function.
March 17, 2003, 8:24 AM
Camel
[code]Dim Statement As String, MatchItTo As String
Statement = "This is my statement!"
MatchItTo = "This*statement!"
If Statement Like MatchItTo Then
   ...
End If[/code]

go through a loop for each user in your listview or whatever, and use: If UserName Like "*[aC]" Then
if you want it to be case insensitive (very good idea, expecially for usernames): If LCase(UserName) Like LCase("*[aC]") Then
March 17, 2003, 11:46 PM
MesiaH
i dont know where i got this but it could be of some assistance:

[code]Public Function Match(ByVal username As String, ByVal Matcher As String) As Boolean
Match = False
   Dim Args() As String, Jd As Long
       Args() = Split(username, "*")
       If (Left$(username, 1) = "*") And (Right$(username, 1) = "*") Then
           For Jd = 0 To UBound(Args)
               If Args(Jd) <> "" Then
                   If InStr(1, LCase(Match), LCase(Args(Jd))) = 0 Then
                       Exit Function
                   End If
               End If
           Next Jd
           Match = True
       End If
End Function[/code]
March 18, 2003, 12:40 AM
Etheran
Perhaps you should look into regex. (surprised nobody brought that up)
March 18, 2003, 6:44 AM
Grok
VB has a LIKE operator.  You may wish to use MSDN Online.
March 18, 2003, 8:36 AM
Spht
I wouldn't suggest using Visual Basic's LIKE operator, as is, for wildcard matching of Battle.net usernames. LIKE sees [ ] # characters as special wildcard characters which could confuse things when comparing names on Battle.net since those are valid characters for Battle.net usernames. If you're not following, try comparing *[vL]* to Spht-vL: "Spht-vL" Like "*[vL]*" - that statement would be TRUE for a Visual Basic LIKE compare when it should be FALSE with ordinary wildcard matching (RegEx, I believe).

As Grok suggested, you should check MSDN for more information.
March 18, 2003, 1:56 PM
Skywing
[quote]I wouldn't suggest using Visual Basic's LIKE operator, as is, for wildcard matching of Battle.net usernames. LIKE sees [ ] # characters as special wildcard characters which could confuse things when comparing names on Battle.net since those are valid characters for Battle.net usernames. If you're not following, try comparing *[vL]* to Spht-vL: "Spht-vL" Like "*[vL]*" - that statement would be TRUE for a Visual Basic LIKE compare when it should be FALSE with ordinary wildcard matching (RegEx, I believe).

As Grok suggested, you should check MSDN for more information.[/quote]Not quite - VB's LIKE supports (some) real RegEx, while just wildcard matching is only a subset of that.
March 18, 2003, 2:05 PM
kamakazie
[quote]MSDN: Note   To match the special characters left bracket ([), question mark (?), number sign (#), and asterisk (*), enclose them in brackets. The right bracket (]) can't be used within a group to match itself, but it can be used outside a group as an individual character.[/quote]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vaoprlike.asp
March 18, 2003, 6:38 PM
MrRaza
I found this on my computer, edit it to do want you want.

[code]Private b1() As Byte
Private b2() As Byte


Public Function Simil(String1 As String, String2 As String) As Double
Dim l1 As Long
Dim l2 As Long
Dim l As Long
Dim r As Double


If UCase(String1) = UCase(String2) Then
r = 1
Else
l1 = Len(String1)
l2 = Len(String2)


If l1 = 0 Or l2 = 0 Then
r = 0
Else
ReDim b1(1 To l1): ReDim b2(1 To l2)


For l = 1 To l1
b1(l) = Asc(UCase(Mid(String1, l, 1)))
Next


For l = 1 To l2
b2(l) = Asc(UCase(Mid(String2, l, 1)))
Next
r = SubSim(1, l1, 1, l2) / (l1 + l2) * 2
End If
End If
Simil = r
Erase b1
Erase b2
End Function


Private Function SubSim(st1 As Long, end1 As Long, st2 As Long, end2 As Long) As Long
Dim c1 As Long
Dim c2 As Long
Dim ns1 As Long
Dim ns2 As Long
Dim i As Long
Dim max As Long
If st1 > end1 Or st2 > end2 Or st1 <= 0 Or st2 <= 0 Then Exit Function


For c1 = st1 To end1


For c2 = st2 To end2
i = 0


Do Until b1(c1 + i) <> b2(c2 + i)
i = i + 1


If i > max Then
ns1 = c1
ns2 = c2
max = i
End If
If c1 + i > end1 Or c2 + i > end2 Then Exit Do
Loop
Next
Next
max = max + SubSim(ns1 + max, end1, ns2 + max, end2)
max = max + SubSim(st1, ns1 - 1, st2, ns2 - 1)


SubSim = max
End Function
[/code]

Inputs: mainstring and checkstring, the
2 strings to compare

Returns: how similar the 2 strings are
(percent, as in .8)

Assumes: This code recursively loops
through the 2 strings, finding the largest
common substring, then checking the
remainder of the string.
March 22, 2003, 5:17 PM

Search