Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.string.wildcardMatch
on wildcardMatch (s, pattern, flCaseSensitive=true) { <<Changes <<11/15/02; 2:11:08 PM by JES <<Created. Returns true if s matches the wildcard pattern. if pattern == "*" { return (true)}; if not flCaseSensitive { s = string.lower (s); pattern = string.lower (pattern)}; local (ctparts = string.countFields (pattern, '*')); if ctparts == 1 { if pattern endswith '*' { return (s beginsWith string.mid (pattern, 1, sizeOf (pattern) - 1))}; return (s == pattern)}; local (i, endix = 0, sizestring = sizeOf (s)); for i = 1 to ctparts { local (onepart = string.nthField (pattern, '*', i)); if onepart == "" { continue}; local (ix = string.patternMatch (onepart, string.mid (s, endix, infinity)) ); if i == 1 { if not (s beginsWith onepart) { return (false)}}; if ix == 0 { return (false)}; local (sizepart = sizeOf (onepart)); if i == ctparts { if pattern endswith '*' { return (true)}; return (s endswith onepart)}; endix = ix + sizepart}; return (true)} <<bundle //testing <<string.wildcardMatch ("this is a wildcard test", "is*test") <<false <<string.wildcardMatch ("this is a wildcard test", "*is*test") <<true
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.