2009-03-19 3 views
1

У меня есть список разрастаний на основе дикой карты в XML-файле. Если входная строка соответствует шаблону, присутствующему в документе XML, то будет предпринята конкретная операция.Поиск по Wild card в C#

Я нашел подход, упомянутый здесь http://www.codeproject.com/KB/recipes/wildcardtoregex.aspx, но в этом случае мне нужно создать объект RegEx для каждой записи в XML, который я пытаюсь избежать.

Позвольте мне знать, есть ли лучший способ сделать это дикий поиск карты в .net

+0

Примеры? Мне сложно визуализировать тип подстановочных знаков/ввода, с которыми вы имеете дело. – Cerebrus

ответ

1

Если вы хотите оценить каждый шаблон в вашем документе в соответствии со строкой ввода, вам нужно создать RegEx для каждого шаблона, как вы упомянули. Нет ярлыка.

Я думаю, вы беспокоитесь о производительности. Вы уверены, что это проблема? Если это так, вы должны попытаться найти совсем другой подход.

Вы собираетесь соответствовать многим входным строкам? В этом случае вы должны сохранять свои RegExes (в списке, скажем), а не создавать их каждый раз. RegExes можно использовать повторно.

В противном случае я не вижу большой проблемы с вашим предлагаемым подходом.

1

Это путь мимо моего сна, так что я может показаться изворотливый на этот ответ.

Мне кажется, что у вас есть что-то неправильное: вы сопоставляете входную строку со списком шаблонов. Логически, вы должны сопоставлять каждый шаблон в списке со строкой ввода и определять соответствие. Для построения массива шаблонов Regex должно быть довольно просто проанализировать XML-файл. Затем вы можете выполнять итерацию по массиву и сопоставлять каждое Regex с вашей входной строкой.

Кроме того, для чего вам нужны подстановочные знаки? Подстановочные знаки можно рассматривать как подмножество Regex, и поэтому у вас уже есть все возможности сопоставления подстановочных знаков, заключенных в объект Regex.

При этом более подробные данные о типе ввода/подстановочных знаков могут оказаться полезными для понимания вашего вопроса.

 Смежные вопросы

  • Нет связанных вопросов^_^