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;
}
posted @ 2016-04-07 11:55  爛轲  阅读(1042)  评论(0编辑  收藏  举报