成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS 基礎(chǔ): toLowerCase 和 toUpperCase 的實(shí)現(xiàn)

isLishude / 864人閱讀

摘要:有兩個(gè)函數(shù)能實(shí)現(xiàn)這兩種轉(zhuǎn)換把編碼轉(zhuǎn)換成對應(yīng)的字符串獲取字符串的編碼下面,我們就動手實(shí)現(xiàn)。三代碼實(shí)現(xiàn)編碼大寫小寫相差轉(zhuǎn)換為碼大寫字母,轉(zhuǎn)小寫編碼大寫小寫相差轉(zhuǎn)換為碼大寫字母,轉(zhuǎn)大寫本人刷題庫,感興趣的可以交流

一、 一道題引發(fā)的思考

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

原題鏈接: https://leetcode.com/problems...

此題要求實(shí)現(xiàn)一個(gè)大寫轉(zhuǎn)小寫的函數(shù),當(dāng)時(shí)腦海中第一時(shí)間浮現(xiàn)的是,js不是提供了一個(gè)
toLowerCase函數(shù)么?于是我毫不猶豫的寫下了答案:

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

but,我想事情沒有這么簡單,除非作者腦袋被門擠了,于是我就思考,js的toLowerCase 是如何實(shí)現(xiàn)的?

二、ASCII編碼

查閱資料后我知道了,計(jì)算機(jī)所有的字符都基于ASCII編碼,下面是ASCII 基礎(chǔ)編碼的映射表:

此時(shí),我們不難發(fā)現(xiàn),A-Z 和 a-z 的 ASCII 編碼的十進(jìn)制剛好相差32,于是我們的實(shí)現(xiàn)思路就是將大寫的轉(zhuǎn)成十進(jìn)制編碼,再轉(zhuǎn)換成小寫字母的十進(jìn)制編碼,最后得到小寫字母。js有兩個(gè)函數(shù)能實(shí)現(xiàn)這兩種轉(zhuǎn)換:

String.fromCharCode(num1, ..., numN) //把編碼轉(zhuǎn)換成對應(yīng)的字符串

str.charCodeAt(index)  //獲取字符串的編碼

下面,我們就動手實(shí)現(xiàn)。

三、代碼實(shí)現(xiàn):

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++) {
    // 轉(zhuǎn)換為ASCII碼
    AscCode = arr[i].charCodeAt();
    // 大寫字母,轉(zhuǎn)小寫
    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++) {
    // 轉(zhuǎn)換為ASCII碼
    AscCode = arr[i].charCodeAt();
    // 大寫字母,轉(zhuǎn)大寫
    if (maxCode >= AscCode && minCode <= AscCode) {
      arr[i] = String.fromCharCode(AscCode-32);
    }
  }
  return arr.join("");
};
本人刷題庫,感興趣的可以交流:https://www.yuque.com/u46795/...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100269.html

相關(guān)文章

  • 基礎(chǔ)js功能學(xué)習(xí)筆記

    摘要:去掉空格前空格,后空格,前后空格,所有空格字母大小寫切換首字母大寫,首字母小寫,大小寫切換,全部大寫,還不小寫傳入函數(shù),里面的參數(shù)分別是字符串本身滿足正則的部分,剩下的部分。 去掉空格 1.前空格,2.后空格,3.前后空格,4.所有空格 function trim(str,type){ switch(type){ ...

    yzd 評論0 收藏0
  • JS基礎(chǔ)知識學(xué)習(xí)(三)

    摘要:基礎(chǔ)知識字符串中常用的方法在中用單雙引號包裹起來的都是字符串字符串就是由到多個(gè)字符組成的特點(diǎn)一以數(shù)字作為索引,從零開始特點(diǎn)二有屬性,存儲的是當(dāng)前字符串中字符的個(gè)數(shù)字符長度如果指定的索引不存在獲取的結(jié)果是真實(shí)項(xiàng)目中,我們經(jīng)常操作字符串,此時(shí) js基礎(chǔ)知識 JavaScript 字符串中常用的方法 在JS中用單(雙)引號包裹起來的都是字符串 var str=welcome to my ho...

    keke 評論0 收藏0
  • JS基礎(chǔ)入門篇(十)—字符串方法

    摘要:方法閱讀說明返回值類型對象方法名稱參數(shù)參數(shù)二解釋返回值類型指的是函數(shù)調(diào)用結(jié)束后返回的值的類型。返回值返回字符串對應(yīng)位置的字符的數(shù)值。截取的字符串長度,默認(rèn)為字符長度。作用把字符串全部轉(zhuǎn)成大寫語法返回值返回轉(zhuǎn)成大寫的字符串。 1.方法閱讀說明 返回值類型 對象.方法名稱(參數(shù)1[,參數(shù)二]); 解釋: 返回值類型:指的是函數(shù)調(diào)用結(jié)束后返回的值的類型。 對象.方法名稱:指的是調(diào)用方法。...

    zsirfs 評論0 收藏0
  • JS基礎(chǔ)入門篇(十)—字符串方法

    摘要:方法閱讀說明返回值類型對象方法名稱參數(shù)參數(shù)二解釋返回值類型指的是函數(shù)調(diào)用結(jié)束后返回的值的類型。返回值返回字符串對應(yīng)位置的字符的數(shù)值。截取的字符串長度,默認(rèn)為字符長度。作用把字符串全部轉(zhuǎn)成大寫語法返回值返回轉(zhuǎn)成大寫的字符串。 1.方法閱讀說明 返回值類型 對象.方法名稱(參數(shù)1[,參數(shù)二]); 解釋: 返回值類型:指的是函數(shù)調(diào)用結(jié)束后返回的值的類型。 對象.方法名稱:指的是調(diào)用方法。...

    JerryWangSAP 評論0 收藏0
  • JS基礎(chǔ)入門篇(十)—字符串方法

    摘要:方法閱讀說明返回值類型對象方法名稱參數(shù)參數(shù)二解釋返回值類型指的是函數(shù)調(diào)用結(jié)束后返回的值的類型。返回值返回字符串對應(yīng)位置的字符的數(shù)值。截取的字符串長度,默認(rèn)為字符長度。作用把字符串全部轉(zhuǎn)成大寫語法返回值返回轉(zhuǎn)成大寫的字符串。 1.方法閱讀說明 返回值類型 對象.方法名稱(參數(shù)1[,參數(shù)二]); 解釋: 返回值類型:指的是函數(shù)調(diào)用結(jié)束后返回的值的類型。 對象.方法名稱:指的是調(diào)用方法。...

    elliott_hu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<