Login Register
Frontpage Code library Pastebin

PatternCompare()

Author: Jare
Added: 20.9.2013 10:37
Edited: 21.9.2013 16:36
Category: Merkkijonot

Description

Yksinkertainen jokerimerkin huomioiva merkkijonojen vertailu. Parametrit: - Merkkijono, joka saattaa sisältää jokerimerkkejä - Vertailtava merkkijono - Huomioidaanko kirjainkoko (oletuksena kyllä) - Käytettävä jokerimerkki (oletuksena *) - Escape-merkki, jonka syöttämällä jokerin eteen, jokeria käytetään tavallisena merkkinä. Aseta tyhjäksi, jos et halua käyttää escape-merkkiä. (oletuksena \). Edit 21.9.2013: Lisäsin escape-merkin.

Code

Select all
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function PatternCompare(pattern$, compare$, case_sensitive=1, wildcard$="*", escape$="\")
    position = 1
    If Not case_sensitive Then
        pattern = Lower(pattern)
        compare = Lower(compare)
    EndIf
    If escape <> "" Then
        pattern = Replace(pattern, escape+escape, Chr(1))
        pattern = Replace(pattern, escape+wildcard, Chr(2))
    EndIf
    count_bits = CountWords2(pattern, wildcard)
    For i = 1 To count_bits
        bit$    = GetWord2(pattern, i, wildcard)
        bit     = Replace(bit, Chr(1), escape)
        bit     = Replace(bit, Chr(2), wildcard)
        position= InStr(compare, bit, position)
        If position = 0 Then Return False
        If i = 1 And position > 1 And Left(pattern,1) <> wildcard Then Return False
        If i = count_bits And position < Len(compare) - Len(bit) + 1 And Right(pattern,1) <> wildcard Then Return False
    Next i
    Return True
EndFunction

Comments

No comments. You can be first!

Leave a comment

You must be logged in to comment.