Convert excel column alphabet (e.g. AA) to number (e.g., 25)

后端 未结 7 1809
余生分开走
余生分开走 2020-12-13 10:55

In my grid the column headers are named A,B,C...,AA,AB,AC,...etc like an excel spreadsheet. How can I convert the string to number like: A => 1, B =>

7条回答
  •  清歌不尽
    2020-12-13 11:00

    solution 1: best performance and browser compatibility

    // convert A to 1, Z to 26, AA to 27
    function lettersToNumber(letters){
        var chrs = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ', mode = chrs.length - 1, number = 0;
        for(var p = 0; p < letters.length; p++){
            number = number * mode + chrs.indexOf(letters[p]);
        }
        return number;
    }
    

    solution 2: best performance and compatibility and shorter code (Recommended)

    // convert A to 1, Z to 26, AA to 27
    function lettersToNumber(letters){
        for(var p = 0, n = 0; p < letters.length; p++){
            n = letters[p].charCodeAt() - 64 + n * 26;
        }
        return n;
    }
    

    solution 3: short code (es6 arrow function)

    // convert A to 1, Z to 26, AA to 27
    function lettersToNumber(letters){
        return letters.split('').reduce((r, a) => r * 26 + parseInt(a, 36) - 9, 0);
    }
    

    test:

    ['A', 'Z', 'AA', 'AB', 'ZZ','BKTXHSOGHKKE'].map(lettersToNumber);
    // [1, 26, 27, 28, 702, 9007199254740991]
    
    lettersToNumber('AAA'); //703
    

提交回复
热议问题