簡體   English   中英

比較C#中忽略大小寫的2個字符的最佳方法是什么?

[英]What is the best way to compare 2 characters ignoring case in C#?

我正在使用控制台應用程序制作密碼驗證方法,並且無法比較兩個字符。 有沒有一種方法可以比較兩個字符而無需使用toUpper()toLower( )方法。 例如,如果我正在比較這兩個字符

 char c1 = 'a', c2 = 'A';

        bool result = c1.Equals(c2);

我希望結果是真實的

我試過使用toLower()方法,但是有問題。

這是我的密碼驗證方法。

  private static bool PasswordValidation(string input)
    {        
        if(!(input.Length>=8&&input.Length<=15))
        {
            Console.WriteLine("min 8 characters max 15");
            return false;
        }

        int specialCharacters = 0, uppLatter = 0, lowerLatter = 0;
        char[] charArray = input.ToCharArray();

        for (int i = 0; i < charArray.Length; i++)
        {
            char ch = charArray[i];
            if (char.IsWhiteSpace(ch))
            {
                Console.WriteLine("can't use space in password");
                return false;
            }

            if (!char.IsLetterOrDigit(ch))              
                specialCharacters++;

            if (char.IsUpper(ch))
                uppLatter++;

            if (char.IsLower(ch))
                lowerLatter++;

            if (i < charArray.Length - 1)
            {

                if (char.ToLower(charArray[i])==char.ToLower(charArray[++i]))
                {
                    Console.WriteLine("same characters");
                    return false;
                }

                if(char.IsDigit(charArray[i])&&char.IsDigit(charArray[++i]))
                {
                    int sum = Convert.ToInt32(charArray[i]) + Convert.ToInt32(charArray[++i]);
                    if(sum==input.Length)
                    {
                        Console.WriteLine("sum is equal to length");
                        return false;
                    }
                }
            }

        }

        if (specialCharacters == 0)
        {
            Console.WriteLine("at lesast one special character is required");
            return false;
        }
        if (uppLatter == 0)
        {
            Console.WriteLine("at lesast one upper latter is required");
            return false;
        }
        if (lowerLatter == 0)
        {
            Console.WriteLine("at lesast one lower character is required");
            return false;
        }


        var repeats = input.GroupBy(s1 => s1)
            .Where(s1 => s1.Count() > 3)
            .Select(s1 => s1).ToArray();

        if (repeats.Length > 0)
        {
            Console.WriteLine("one character can't be repeted more than 3 times");
            return false;
        }
        return true;
    }

如您所見,我已經使用整數來計算低位和高位字母以及特殊字符的數量,但這僅適用於輸入字符串的第一個字符。 當我擊中這個

如果(char.ToLower(charArray [i])== char.ToLower(charArray [++ i]))

的代碼行,所有地獄打破。

任何建議都是有幫助的。 感謝您的時間。

你可以這樣做:

char c1 = 'a', c2 = 'A';

bool result = String.Equals(c1.ToString(), c2.ToString(), StringComparison.OrdinalIgnoreCase);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM