js的toLowerCase,toUpperCase是如何實現的?


js的toLowerCase 是如何實現的?

二、ASCII編碼

查閱資料后我知道了,計算機所有的字符都基於ASCII編碼,下面是ASCII 基礎編碼的映射表:

此時,我們不難發現,A-Z 和 a-z 的 ASCII 編碼的十進制剛好相差32,

於是我們的實現思路就是將大寫的轉成十進制編碼,再轉換成小寫字母的十進制編碼,最后得到小寫字母。js有兩個函數能實現這兩種轉換:

String.fromCharCode(num1, ..., numN) //把編碼轉換成對應的字符串 str.charCodeAt(index) //獲取字符串的編碼

下面,我們就動手實現。

三、代碼實現:

  • toLowerCase():
 1 /**
 2  * @param {string} str
 3  * @return {string}
 4  */
 5 var toLowerCase = function(str) {
 6   // ASCII 編碼大寫小寫相差32
 7   let arr = str.split('');
 8   let AscCode;
 9   let maxCode = 'Z'.charCodeAt();
10   let minCode = 'A'.charCodeAt();
11   for (let i = 0; i < arr.length; i++) {
12     // 轉換為ASCII碼
13     AscCode = arr[i].charCodeAt();
14     // 大寫字母,轉小寫
15     if (maxCode >= AscCode && minCode <= AscCode) {
16       arr[i] = String.fromCharCode(AscCode+32);
17     }
18   }
19   return arr.join('');
20 };

 

  • toUpperCase():
 
 1 /**
 2  * @param {string} str
 3  * @return {string}
 4  */
 5 var toUpperCase = function(str) {
 6   // ASCII 編碼大寫小寫相差32
 7   let arr = str.split('');
 8   let AscCode;
 9   let maxCode = 'z'.charCodeAt();
10   let minCode = 'a'.charCodeAt();
11   for (let i = 0; i < arr.length; i++) {
12     // 轉換為ASCII碼
13     AscCode = arr[i].charCodeAt();
14     // 大寫字母,轉大寫
15     if (maxCode >= AscCode && minCode <= AscCode) {
16       arr[i] = String.fromCharCode(AscCode-32);
17     }
18   }
19   return arr.join('');
20 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM