美文网首页Web 前端开发 Web前端之路
关于如何使用charCodeAt来实现一些基本功能

关于如何使用charCodeAt来实现一些基本功能

作者: cb12hx | 来源:发表于2017-12-18 10:19 被阅读17次

    这是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('')
    }
    

    相关文章

      网友评论

      • FIFA_Canini:weak,太低端了。能不能写点高端的
        cb12hx:@FIFA_Canini 感谢您的鞭策!

      本文标题:关于如何使用charCodeAt来实现一些基本功能

      本文链接:https://www.haomeiwen.com/subject/hwppwxtx.html