Как я могу проверить, есть ли в String числа, отсортированные по возрастанию, например 1234? - PullRequest
0 голосов
/ 23 мая 2019

Для домашней работы мне нужно создать программу, которая сканирует введенный пользователем «пароль» и показывает, сильный он или слабый.

Одно из моих условий - проверить, содержит ли строка «Пароль» числа встрока, например, mypass123.

Я уже пробовал это, но он не будет принимать письма:

int DigitCounter = 0;
var DigitRow = string.Join("", Password.OrderBy(i => int.Parse(i.ToString())));

for(int i = 0; i < Password.Length; ++i)
{
    if(Password == DigitRow)
    {
        DigitCounter++;
    }
}

Ответы [ 3 ]

1 голос
/ 23 мая 2019

Попробуйте этот подход с выражением регулярного выражения:

foreach (var numberGroup in new Regex("[0-9]{2,}").Matches(Password))
{
    if (numberGroup.Value.OrderBy(c => c).SequenceEquals(numberGroup.Value))
    {
         // numbers in ascending order!
    }
}

[0-9]{2,} будет соответствовать каждой части входной строки, которая содержит две или более цифры рядом друг с другом.Затем мы пытаемся отсортировать входную строку по цифрам и посмотреть, изменилась ли строка - если она не содержит цифры в порядке уже

0 голосов
/ 24 мая 2019

Вы можете попробовать с приведенной ниже функцией

 public static bool IsStrong(string pass)
        {

            bool isStrong = false;
            int num = 0;
            var stringArr = pass.ToCharArray();
            var numsArr = new List<int>();

            foreach (var a in stringArr)
            {
                if (int.TryParse(a.ToString(), out num))
                {
                    numsArr.Add(num);
                }
            }

            if (numsArr.Any())
            {
                for (int i = 1; i < numsArr.Count(); i++)
                {
                    if(numsArr[i] - numsArr[i-1] != 1)
                    {
                        isStrong = true;
                    }
                }
            }

            return isStrong;

        }
0 голосов
/ 23 мая 2019

Каждый символ в строке может быть преобразован в число, в зависимости от кодировки.
В ASCII A равно 65, B равно 66 и т. Д. Вы можете получить их, приведя их к int ((int) Password[0]) и сравнив между ними.

Password = "12345";
var array = Password.Select(i => (int) i).ToList();
// array: { 49, 50, 51, 52, 53 }
// Use your way to check if they are in a row!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...