0%

字符串trick

字符串 trick

分享个字母大小写转换的方法:

  1. 统一转成大写:ch & 0b11011111 简写:ch & 0xDF
  2. 统一转成小写:ch | 0b00100000 简写:ch | 0x20
  3. 大小写互换:ch …… 0b00100000 简写:ch ^ 0x20,原来是小写转成大写,原来是大写则转成小写

比较的时候注意加上小括号哦,因为位运算优先级比较低。

原理:65~90为26个大写英文字母,97~122号为26个小写英文字母

65(0100 0001)到 90(0101 1010),刚好第5位(从0开始)都为0

97(0110 0001)到 122(0111 1010),刚好第5位(从0开始)都为1

说明: ch & 0b11011111 ,效果就是将第5位(从0开始)清0,即如果第5位原来为0(大写字母),则保持不变,否则,减去32(小写转大写),小写字母转换成对应的大写字母正好就是减32

同理,ch | 0b00100000,效果是如果第5位(从0开始)为0(大写字母),则加32,否(大写转小写)则,保持不变