使用c#检查给定密码中0-9之间的至少1个数字

问题描述 投票:0回答:2

我正在尝试遍历字符串中的每个字符,以查看它们是否为0-9之间的数字。我收到numCheck数组的索引超出范围错误,所以我知道我的问题是当我尝试运行时,IDE期望txt_Pass.Text的长度等于我在数组中拥有的字符数。这是错误的,但是我不确定如何解决。我不确定输入的密码会持续多久,因此需要使用向量吗?还是我完全离开了?

        char[] numCheck = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

        for (int i = 0; i < txt_Pass.Text.Length; i++)
        {
            if (txt_Pass.Text[i] != numCheck[i])
            {
                lbl_Form1_NumError.Visible = true;
            }
            lbl_Form1_NumError.Visible = false;
        }

'''

c# for-loop passwords indexoutofboundsexception
2个回答
0
投票

对于具有十个以上字符的任何字符串都会遇到数组索引问题,因为您要遍历所有这些值并且也使用该值来索引到numCheck数组中。 由于只有十个元素,因此访问11号是不行的。

一个简单的方法是有两个嵌套循环,以检查numCheck中的任何字符是否等于输入字符串的任何字符,但是当C#提供各种奇妙的库函数来执行此操作时,这实际上不是必需的。为您繁重:

if (txt_Pass.Text.indexOfAny(numCheck) != -1) {
    TheTextHasAtLeastOneDigit();
}

0
投票

LINQ进行救援!

lbl_Form1_NumError.Visible = txt_Pass.Text.Any(c => numCheck.Contains(c))
© www.soinside.com 2019 - 2024. All rights reserved.