Как узнать максимальное значение n-символьной маски?

209
19 июля 2017, 21:15

Стоит задача генерации последовательности номеров. Допустим есть номер

898811122xxx

Как мы видим xxx — это маска. Чтобы сгенерировать эту последовательность можно воспользоваться методом For, однако я не знаю как определить максимальное значение 3-значного числа ( у нас в строке номера xxx). Для данной маски это число 999. Подскажите алгоритм определения этого значения в коде c#.

Answer 1

Максимальное значение n-значного числа в десятичной системе можно сгенерировать в виде строки так:

var maxValueString = new string('9', n);

затем нужно будет преобразовать в числовой тип. В зависимости от n это может быть int, long, BigInteger:

int maxValue = Int32.Parse(new string('9', n)));
Answer 2

Зависит от того, сколько может быть различных символов в маске (power):

var mask = "XXX";
var power = '9' - '0' + 1; // 10
var size = Math.Pow(power, mask.Length) - 1;

Здесь power = 10 для символов от 0 до 9.

Допустим, у нас X - это символ от А до Z, тогда:

var power = 'Z' - 'A' + 1; // 26

В более общем случае подряд идущих символов - это maxchar - minchar + 1 (количество вариаций символов).

READ ALSO
Динамический формат в ToString()

Динамический формат в ToString()

Вдогонку к предыдущему вопросу

184
Прозрачная, прокликиваемая “внутрь” форма

Прозрачная, прокликиваемая “внутрь” форма

Как сделать форму прокликиваемой? На форме label с фоновым изображением, нужно чтобы при клике на форму и label, клик уходил в окно за ней

248