这是String的一个方法,用它可以返回方法返回0到65535之间的整数,其中前128位就是ASCII编码,此处关于编码的问题就不展开了,本文限制在前128位的范围
ASCII码用来存储一些常用的字符,比如字母,数字,空格等等等等,这些字符是连续的,所以可以根据这个来对字符串进行一些简单操作
以下以获取字符串中的数字来做案例,怎么去获取数字呢,数字的范围是48-57,其中48代表0,57代表9,所以我们以此就能够写出怎么去得到字符串中的数字了,代码如下
function getNum(str){
return +[...str].filter((item)=>{
return item.charCodeAt(0)>47 && item.charCodeAt(0)<58
}).join('')
}
其中的+号是把字符串转换为数字,如果转换失败就返回NaN,...是ES6中的写法,叫spread运算符,这边是将字符串转换成了数组,它还可以用来合并数组等,核心在于filter,只要字符的code满足47到58,那么就是数字
怎么样,是不是很简单,其实里面有一些我们必须记住的东西,就是那个取值范围,我们可以这样来优化代码
function getNum(str){
return +[...str].filter((item)=>{
return item.charCodeAt(0)>='0'.charCodeAt(0) && item.charCodeAt(0)<='9'.charCodeAt(0)
}).join('')
}
即大于等于0的编码和小于等于9的编码即可
接下来,我们扩展一下,比如实现去除空格,获取大写字母,获取小写字母之类的,就很简单了
// 去除空格
function trim(str){
return [...str].filter((item)=>{
return item.charCodeAt(0) != ' '.charCodeAt(0)
}).join('')
}
// 获取小写字母
function getLowerCase(str){
return [...str].filter((item)=>{
return item.charCodeAt(0)>='a'.charCodeAt(0) && item.charCodeAt(0)<='z'.charCodeAt(0)
}).join('')
}
// 获取大写字母
function getUpperCase(str){
return [...str].filter((item)=>{
return item.charCodeAt(0)>='A'.charCodeAt(0) && item.charCodeAt(0)<='Z'.charCodeAt(0)
}).join('')
}