用js实现toLowerCase()、toUpperCase()?

怎么像在C语言里面通过ASSIC码做转换?实现 string.prototype.toUpperCase()、string.prototype.toLowerCase()

function UpperCase(s){
    var str = s;
    var arr = str.split("");
    for(var i=0; i<arr.length; i++){
        arr[i] = arr[i] + 'a' -'A';    
    }
    str = arr.join("");
    return str;
}
var s = "aaaSSF";
UpperCase(s); //NANNANNAN
阅读 3.4k
2 个回答

function UpperCase(s) {
    var str = s;
    var arr = str.split("");
    var charCodeOfA = 'A'.charCodeAt();
    var charCodeOfZ = 'Z'.charCodeAt();
    var difference = charCodeOfA - 'a'.charCodeAt();
    var curChar;

    for(var i = 0; i < arr.length; i++) {
        curChar = arr[i].charCodeAt();
        arr[i] = (curChar < charCodeOfZ && curChar > charCodeOfA) ? arr[i] : String.fromCharCode(curChar + difference);    
    }
    
    str = arr.join("");
    return str;
}

var s = "aaaSSF";
UpperCase(s); //AAASSF

我还是在你原来的代码上改吧, 而且你的代码还有些bug, 我也一起说了吧, 建议以后提问先查查文档吧.
本质就是用charCodeAt这个函数

function UpperCase(s){
    var str = s;
    var arr = str.split("");
    for(var i=0; i<arr.length; i++){
        if ( 'a'.charCodeAt(0) <= arr[i].charCodeAt(0) ) // 这里要判断当前字母的大小写
            arr[i] = String.fromCharCode(arr[i].charCodeAt(0) - 'a'.charCodeAt(0) +'A'.charCodeAt(0));     // 注意运算符, 你的代码写反了
    }
    str = arr.join("");
    console.log(arr);
    return str;
}
var s = "aaaDDSSF";
UpperCase(s); 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题