Как замаскировать первые 6 и последние 4 цифры для номера кредитной карты в .net

Это также полезно, если вы хотите повторно инициализировать глобальные или статически распределенные структуры.

Старый способ C использовал memset() для установки всех элементов на 0. Вы не можете сделать это на C ++ из-за vtables и конструкторов пользовательских объектов.

Поэтому я иногда использую следующие

 static Mystruct m;

 for(...)  {
     // re-initialize the structure. Note the use of placement new
     // and the extra parenthesis after Mystruct to force initialization.
     new (&m) Mystruct();

     // do-some work that modifies m's content.
 }
1
задан Bynho 22 February 2019 в 13:59
поделиться

2 ответа

Если производительность является проблемой, вот схема, которая проходит только 94 шага, а не 473 другого ответа, избегая обхода и чередования:

\d{4}[ -]?\d{2}\K\d{2}[ -]?\d{4}

Демонстрация: [ 112] https://regex101.com/r/0XMluq/4

Редактировать: В варианте регулярного выражения C # вместо этого можно использовать следующий шаблон, поскольку C # допускает просмотр с переменной длиной.

(?<=\d{4}[ -]?\d{2})\d{2}[ -]?\d{4}

Демо

0
ответ дан CAustin 22 February 2019 в 13:59
поделиться

Попробуйте Regex: (?<=\d{4}\d{2})\d{2}\d{4}(?=\d{4})|(?<=\d{4}( |-)\d{2})\d{2}\1\d{4}(?=\1\d{4})

Regex Demo

C # Demo

Объяснение:

[110 ]
0
ответ дан Matt.G 22 February 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: