又是一道面試題,我只想到兩種方式:
第一種:循環字符串,判斷每個字符串的類型,再根據類型對該字符進行操作(轉大寫、轉小寫、不變或舍棄)
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 */
結果打印:

