Code archives/Algorithms/Search String Array
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| Basically, this searches an array of strings for strings matching the search pattern (* is the only supported wildcard; I didn't see a need for any others). I don't know of any problems with this, but I wrote it in about 20 minutes or so (while eating cake!), so if you find a problem, might as well post it and I'll try to fix it. Requires this: SplitString | |||||
Function SearchStrings$[]( search$, arr$[] )
Local clean$ = ""
Local l$ = ""
For Local ex% = 0 To search.Length-1
Local p$ = Chr(search[ex])
If p = "*" And l = "*" Then Continue
If p = "*" Then p = "|*|"
clean :+ p
Next
Local s$[] = SplitString( clean, "|" )
Local resn%=arr.Length
Local bad%[arr.Length]
memset_(bad,0,arr.Length*4)
For Local ex% = 0 To arr.Length-1
Local e$ = arr[ex]
If e = "" Or e = Null Then
bad[ex] = 1
resn :- 1
Continue
EndIf
Local from% = 0, find% = 0
For Local i% = 0 To s.Length-1
Local p$ = s[i]
If p = "*" And i = s.Length-1 Then
Continue
ElseIf p = "*" Then
p = s[i+1]
EndIf
find = e.Find(p,from)
If find = -1 Or (find > 0 And i = 0 And s[i] <> "*") Then
bad[ex] = 1
resn :- 1
Exit
EndIf
from = find
Next
Next
Local ret$[resn]
Local n% = 0
For Local ex% = 0 To arr.Length-1
If bad[ex] Then Continue
Local e$ = arr[ex]
ret[n] = e
n :+ 1
Next
Return ret
End Function |
Comments
None.
Code Archives Forum