String mønster matching

Det er mange ganger når du trenger å sammenligne to strenger, men ønsker å bruke jokere i kampen - alle etternavn som begynner med 'St', etc.Contributor: DAVID STIDOLPHThe følgende er en del av koden jeg fikk fra Sean Stanley i Tallahassee Florida i C. Jeg oversatte den til Delphi en am laste den her for alle å bruke. Jeg har ikke testet det extensivly, men den opprinnelige funksjonen har blitt testet ganske thoughly.I vil gjerne tilbakemeldinger på denne rutinen - eller folks endringer i den. Jeg ønsker å videresende dem til Sean for å få ham til å slippe flere godbiter som dette. {Denne funksjonen tar to strenger og sammenligner dem. Den første strengen kan være hva som helst, men bør ikke inneholde mønster tegn (* eller?). Mønsteret streng kan ha så mange av disse mønster tegn som du ønsker. For eksempel: MatchStrings ('David Stidolph', '* St *') vil returnere sann. Orignal koden ved Sean Stanley i C Omskrevet i Delphi av David Stidolph} funksjons MatchStrings (kilde, mønster: String): Boolean; Var pSource: Array [0..255] av Char; pPattern: Array [0..255] av Char; funksjon MatchPattern (element, mønster: PChar): Boolean; funksjon IsPatternWild (mønster: PChar): Boolean; Var t: Integer; begynne Resultat: = StrScan (mønster, '*') < > nil; hvis ikke Resultat deretter Resultat: = StrScan (mønster, "?") < > nil; slutt; begynner hvis 0 = StrComp (mønster, '*') så Resultat: = True else if (element ^ = Chr (0)) og (mønster ^ < > Chr (0)) så Resultat: = False annet hvis element ^ = Chr (0) deretter Resultat: = True annet begynne tilfelle mønster ^ av '*': hvis MatchPattern (element, @ mønster [1]) så Resultat: = True annet Resultat: = MatchPattern (element [1], mønster); "?": Resultat: = MatchPattern (element [1], @ mønster [1]); else if element ^ = mønster ^ deretter Resultat: = MatchPattern (element [1], @ mønster [1]) ellers Resultat: = False; slutt; slutt; ender, begynner StrPCopy (pSource, kilde); StrPCopy (pPattern, mønster); Resultat: = MatchPattern (pSource, pPattern); end; Anmeldelser



Previous:
Next Page: