资讯专栏INFORMATION COLUMN

JS 基础: toLowerCase 和 toUpperCase 的实现

isLishude / 698人阅读

摘要:有两个函数能实现这两种转换把编码转换成对应的字符串获取字符串的编码下面,我们就动手实现。三代码实现编码大写小写相差转换为码大写字母,转小写编码大写小写相差转换为码大写字母,转大写本人刷题库,感兴趣的可以交流

一、 一道题引发的思考

今日在leetCode 刷算法题,遇到一道题:

原题链接: https://leetcode.com/problems...

此题要求实现一个大写转小写的函数,当时脑海中第一时间浮现的是,js不是提供了一个
toLowerCase函数么?于是我毫不犹豫的写下了答案:

/**
 * @param {string} str
 * @return {string}
 */
var toLowerCase = function(str) {
    return str.toLowerCase();
};

but,我想事情没有这么简单,除非作者脑袋被门挤了,于是我就思考,js的toLowerCase 是如何实现的?

二、ASCII编码

查阅资料后我知道了,计算机所有的字符都基于ASCII编码,下面是ASCII 基础编码的映射表:

此时,我们不难发现,A-Z 和 a-z 的 ASCII 编码的十进制刚好相差32,于是我们的实现思路就是将大写的转成十进制编码,再转换成小写字母的十进制编码,最后得到小写字母。js有两个函数能实现这两种转换:

String.fromCharCode(num1, ..., numN) //把编码转换成对应的字符串

str.charCodeAt(index)  //获取字符串的编码

下面,我们就动手实现。

三、代码实现:

toLowerCase():

/**
 * @param {string} str
 * @return {string}
 */
var toLowerCase = function(str) {
  // ASCII 编码大写小写相差32
  let arr = str.split("");
  let AscCode;
  let maxCode = "Z".charCodeAt();
  let minCode = "A".charCodeAt();
  for (let i = 0; i < arr.length; i++) {
    // 转换为ASCII码
    AscCode = arr[i].charCodeAt();
    // 大写字母,转小写
    if (maxCode >= AscCode && minCode <= AscCode) {
      arr[i] = String.fromCharCode(AscCode+32);
    }
  }
  return arr.join("");
};

toUpperCase():

/**
 * @param {string} str
 * @return {string}
 */
var toUpperCase = function(str) {
  // ASCII 编码大写小写相差32
  let arr = str.split("");
  let AscCode;
  let maxCode = "z".charCodeAt();
  let minCode = "a".charCodeAt();
  for (let i = 0; i < arr.length; i++) {
    // 转换为ASCII码
    AscCode = arr[i].charCodeAt();
    // 大写字母,转大写
    if (maxCode >= AscCode && minCode <= AscCode) {
      arr[i] = String.fromCharCode(AscCode-32);
    }
  }
  return arr.join("");
};
本人刷题库,感兴趣的可以交流:https://www.yuque.com/u46795/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100269.html

相关文章

  • 基础js功能学习笔记

    摘要:去掉空格前空格,后空格,前后空格,所有空格字母大小写切换首字母大写,首字母小写,大小写切换,全部大写,还不小写传入函数,里面的参数分别是字符串本身满足正则的部分,剩下的部分。 去掉空格 1.前空格,2.后空格,3.前后空格,4.所有空格 function trim(str,type){ switch(type){ ...

    yzd 评论0 收藏0
  • JS基础知识学习(三)

    摘要:基础知识字符串中常用的方法在中用单双引号包裹起来的都是字符串字符串就是由到多个字符组成的特点一以数字作为索引,从零开始特点二有属性,存储的是当前字符串中字符的个数字符长度如果指定的索引不存在获取的结果是真实项目中,我们经常操作字符串,此时 js基础知识 JavaScript 字符串中常用的方法 在JS中用单(双)引号包裹起来的都是字符串 var str=welcome to my ho...

    keke 评论0 收藏0
  • JS基础入门篇(十)—字符串方法

    摘要:方法阅读说明返回值类型对象方法名称参数参数二解释返回值类型指的是函数调用结束后返回的值的类型。返回值返回字符串对应位置的字符的数值。截取的字符串长度,默认为字符长度。作用把字符串全部转成大写语法返回值返回转成大写的字符串。 1.方法阅读说明 返回值类型 对象.方法名称(参数1[,参数二]); 解释: 返回值类型:指的是函数调用结束后返回的值的类型。 对象.方法名称:指的是调用方法。...

    zsirfs 评论0 收藏0
  • JS基础入门篇(十)—字符串方法

    摘要:方法阅读说明返回值类型对象方法名称参数参数二解释返回值类型指的是函数调用结束后返回的值的类型。返回值返回字符串对应位置的字符的数值。截取的字符串长度,默认为字符长度。作用把字符串全部转成大写语法返回值返回转成大写的字符串。 1.方法阅读说明 返回值类型 对象.方法名称(参数1[,参数二]); 解释: 返回值类型:指的是函数调用结束后返回的值的类型。 对象.方法名称:指的是调用方法。...

    JerryWangSAP 评论0 收藏0
  • JS基础入门篇(十)—字符串方法

    摘要:方法阅读说明返回值类型对象方法名称参数参数二解释返回值类型指的是函数调用结束后返回的值的类型。返回值返回字符串对应位置的字符的数值。截取的字符串长度,默认为字符长度。作用把字符串全部转成大写语法返回值返回转成大写的字符串。 1.方法阅读说明 返回值类型 对象.方法名称(参数1[,参数二]); 解释: 返回值类型:指的是函数调用结束后返回的值的类型。 对象.方法名称:指的是调用方法。...

    elliott_hu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<