C# 字符串大寫轉小寫,小寫轉大寫,數字保留,其他除外


又是一道面試題,我只想到兩種方式:

第一種:循環字符串,判斷每個字符串的類型,再根據類型對該字符進行操作(轉大寫、轉小寫、不變或舍棄)

static void Main(string[] args)
{
    //大寫轉小寫,小寫轉大寫,數字保留,其他除外
    string str = "Aa Bb 123!@#";     //測試字符串
    string newStr = string.Empty;    //用於存放新字符串
    
    //循環字符串
    foreach (char item in str)
    {
        if (item >= 'a' && item <= 'z')
        {
            //小寫字母轉大寫
            newStr += item.ToString().ToUpper();
        }
        else if (item >= 'A' && item <= 'Z')
        {
            //大寫字母轉小寫
            newStr += item.ToString().ToLower();
        }
        else if (item >= '0' && item <= '9')
        {
            //數字不變
            newStr += item.ToString();
        }
    }
    //打印
    System.Console.WriteLine(newStr);
    System.Console.ReadLine();
}

第二種:將字符串轉為byte[],循環byte[],使用ASCII碼進行判斷

static void Main(string[] args)
{
    //大寫轉小寫,小寫轉大寫,數字保留,其他除外
    string str = "Aa Bb 123!@#";     //測試字符串
    string newStr = string.Empty;    //用於存放新字符串

    //字符串-->byte[] 
    ASCIIEncoding ascii = new ASCIIEncoding();
    byte[] bytes = ascii.GetBytes(str);

    //循環byte[] 
    foreach (byte item in bytes)
    {
        //臨時存放
        byte[] temp = new byte[] { item };

        if (item >= 97 && item <= 122)
        {
            //小寫字母轉大寫
            newStr += ascii.GetString(temp).ToUpper();
        }
        else if (item >= 65 && item <= 90)
        {
            //大寫字母轉小寫
            newStr += ascii.GetString(temp).ToLower();
        }
        else if (item >= 48 && item <= 57)
        {
            //數字不變
            newStr += ascii.GetString(temp);
        }
    }
    //打印
    System.Console.WriteLine(newStr);
    System.Console.ReadLine();
}

備注:數字,字母的ASCII碼對照表

/*
0~9數字對應十進制48-57
a~z字母對應的十進制97-122十六進制61-7A
A~Z字母對應的十進制65-90十六進制41-5A
*/

結果打印:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM