2009-03-19 6 views
1

J'ai une liste de configuration basée sur les caractères génériques dans un fichier XML. Si la chaîne d'entrée correspond au modèle présent dans le document XML, une action spécifique sera effectuée.Recherche de carte générique dans C#

J'ai trouvé l'approche mentionnée ici http://www.codeproject.com/KB/recipes/wildcardtoregex.aspx mais dans ce cas, j'ai besoin de créer un objet RegEx pour chaque entrée dans le XML que j'essaie d'éviter.

Laissez-moi est-il une meilleure façon de faire la recherche de wild card dans .net

+0

Exemples? J'ai du mal à visualiser le type de caractères génériques/d'entrée avec lesquels vous traitez. – Cerebrus

Répondre

1

Si vous souhaitez évaluer chaque motif dans votre document pour qu'il corresponde à la chaîne d'entrée, vous devrez créer un RegEx pour chaque motif, comme vous l'avez mentionné. Il n'y a pas de raccourci.

Je suppose que vous vous inquiétez de la performance. Êtes-vous sûr que c'est un problème? Si oui, vous devriez essayer de trouver une approche complètement différente.

Allez-vous faire correspondre de nombreuses chaînes d'entrée? Dans ce cas, vous devriez conserver vos RegExes (dans une liste, par exemple) plutôt que de les créer à chaque fois. RegExes peut être réutilisé.

Sinon, je ne vois pas de gros problème avec votre approche proposée.

1

Il est ainsi passé mon heure du coucher, donc je peut sembler bizarre sur cette réponse.

Il me semble que vous avez des choses mal configurées: vous faites correspondre une chaîne d'entrée à une liste de modèles. Logiquement, vous devez faire correspondre chaque motif dans la liste avec la chaîne d'entrée et déterminer une correspondance. Il devrait être assez simple de construire un tableau de modèles Regex en analysant le fichier XML. Vous pouvez ensuite parcourir le tableau et faire correspondre chaque expression rationnelle à votre chaîne d'entrée.

De plus, pourquoi avez-vous besoin de caractères génériques? Les caractères génériques peuvent être considérés comme un sous-ensemble de Regex et vous disposez donc déjà de toutes les fonctionnalités de correspondance générique encapsulées dans l'objet Regex. Cela dit, plus de données sur le type d'entrée/jokers peuvent s'avérer utiles pour comprendre votre question.