c#字符串大小写转换
解决方法如同昆虫世界多姿多彩:
善于总结就会发现,小写与大写的二进制存在某种转换关系:
比如:
大写A 二进制:0100 0001
小写a 二进制:0110 0001
...
大写Z 二进制:0101 1010
小写z 二进制:0111 1010
可以发现个规律:大小写差别在于第6位的位值,也就是相差32;所以要把大写转换成小写,只需要把它第6位置1;小写转换成大写,把它置0,其他位保持不变;
得到两个掩码:
大写--〉小写 0010 0000
小写--〉大写 1101 1111
//////////////////////////////////
A: 0100 0001
or 0010 0000
-------------
a: 0110 0001
//////////////////////////////////
a: 0110 0001
and 1101 1111
-------------
A: 0100 0001
/////////////////////////////////
//转换成大写
static
string
ToUpper(
string
str)
{
string
result =
string
.Empty;
for
(
int
i = 0; i < str.Length; i++)
result += (
char
)(str[i] & 223);
return
result;
}
//转换成小写
static
string
ToLower(
string
str)
{
string
result =
string
.Empty;
for
(
int
i = 0; i < str.Length; i++)
result += (
char
)(str[i] | 32);
return
result;
}