# 转换成小写字母(709)
# 题目
实现函数 ToLowerCase()
,该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。
# 示例
输入: "Hello"
输出: "hello"
# 算法
# ASCII码
export const toLowerCase = (str) => {
return str
.split("")
.map((t) => (t.charCodeAt() >= 65 && t.charCodeAt() <= 90 ? String.fromCodePoint(t.charCodeAt() + 32) : t))
.join("");
};
1
2
3
4
5
6
2
3
4
5
6
# ASCII码表中的数字字母位置
A-Z
: 65 - 90a-z
: 97 - 1220-9
: 48 - 57
# 正则
export const toLowerCase = (str) => {
return str.replaceAll(/[A-Z]/g, (t) => String.fromCodePoint(t.charCodeAt() + 32));
};
1
2
3
2
3
# 位运算
方法类似于第一个,只是使用了位运算代替加法
大写字母A
的ASCII码是65
,二进制是0100 0001
,计算65 | 32 = 0100 0001 | 0010 0000 = 0110 0001 = 97
,得到小写字母a
的ASCII码
export const toLowerCase = (str) => {
return str
.split("")
.map((t) => String.fromCodePoint(t.charCodeAt() | 32))
.join("");
};
1
2
3
4
5
6
2
3
4
5
6
# 其他使用位运算的技巧
- 全部转换大写:
&33
- 全部转换小写:
|32
- 大小写互相转换:
^32
← 旅行终点站(1436) 单词规律(290) →