2014-11-20 1 views
0

Я пытаюсь выяснить, возможно ли это в C#. У меня есть список значений (строки штрих-кода) говорят:Найти отсутствующие элементы в списке на основе маски

11Y111 
22Y222 
33Y333 
44Y444 
66Y666 

и я хочу, чтобы определить, какие элементы не были просмотрены (не в списке в этом случае 55Y555.). Проблема заключается в том, что штрих-код может быть любым: просто цифровым или с одним или несколькими альфа-символами в нем, то есть A123456, 123456A и т. Д. Это будет одна и та же маска штрих-кода каждый раз, когда сканирование происходит.

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

Любая помощь оценена!

Джим

+0

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

+0

Я не знал, возможно ли это в регулярном выражении. Нет, у меня нет списка ожидаемых значений, отличных от стартового штрих-кода, например, A123456 и штрих-кода конца A444444. Но проблема в том, что символ может появляться в любом месте штрих-кода. BC123456 123456BC 12BC3456. – malovern

+0

Вы можете решить это с помощью регулярного выражения, иначе вы можете, как сказано в ответе ниже, просто удалить все буквы, а затем просто пропустить через них – Vajura

ответ

1

Регулярные выражения не собирается решать эту проблему - они могут соответствовать только то, что есть, а не то, что отсутствует. Я предлагаю другой подход:

  • Возьмите свой список значений.
  • Удалите из них буквы, оставив только цифры (что-то вроде resultString = Regex.Replace(subjectString, @"\D+", "");).
  • Перечислите список номеров в ожидаемом диапазоне (например, от 123456 до 444444) и сохраните/распечатайте те, которые не могут быть найдены в вашем списке.
+0

Спасибо Тим - должен быть медленный день, я не мог придумать способ;) – malovern

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