又是一道面试题,我只想到两种方式:
第一种:循环字符串,判断每个字符串的类型,再根据类型对该字符进行操作(转大写、转小写、不变或舍弃)
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
*/
结果打印: