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

js的toLowerCase 是如何實現的?函數

2、ASCII編碼

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

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

因而咱們的實現思路就是將大寫的轉成十進制編碼,再轉換成小寫字母的十進制編碼,最後獲得小寫字母。js有兩個函數能實現這兩種轉換:spa

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

下面,咱們就動手實現。code

3、代碼實現:

  • 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 };
相關文章
相關標籤/搜索