js的toLowerCase 是如何實現的?函數
查閱資料後我知道了,計算機全部的字符都基於ASCII編碼,下面是ASCII 基礎編碼的映射表:ui
此時,咱們不難發現,A-Z 和 a-z 的 ASCII 編碼的十進制恰好相差32,編碼
因而咱們的實現思路就是將大寫的轉成十進制編碼,再轉換成小寫字母的十進制編碼,最後獲得小寫字母。js有兩個函數能實現這兩種轉換:spa
String.fromCharCode(num1, ..., numN) //把編碼轉換成對應的字符串 str.charCodeAt(index) //獲取字符串的編碼
下面,咱們就動手實現。code
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 };
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 };