What is a method that can be used to increment letters?

前端 未结 14 2557
我在风中等你
我在风中等你 2020-11-27 04:19

Does anyone know of a Javascript library (e.g. underscore, jQuery, MooTools, etc.) that offers a method of incrementing a letter?

I would like to be able to do somet

相关标签:
14条回答
  • 2020-11-27 04:47

    This one does work well:

    var nextLetter = letter => {
        let charCode = letter.charCodeAt(0);
        let isCapital = letter == letter.toUpperCase();
    
        if (isCapital == true) {
            return String.fromCharCode((charCode - 64) % 26 + 65)
        } else {
            return String.fromCharCode((charCode - 96) % 26 + 97)
        }
    }
    
    EXAMPLES
    
    nextLetter("a"); // returns 'b'
    nextLetter("z"); // returns 'a'
    nextLetter("A"); // returns 'B'
    nextLetter("Z"); // returns 'A'
    
    0 讨论(0)
  • 2020-11-27 04:48

    What if the given letter is z? Here is a better solution. It goes A,B,C... X,Y,Z,AA,AB,... etc. Basically it increments letters like the column ID's of an Excel spreadsheet.

    nextChar('yz'); // returns "ZA"

        function nextChar(c) {
            var u = c.toUpperCase();
            if (same(u,'Z')){
                var txt = '';
                var i = u.length;
                while (i--) {
                    txt += 'A';
                }
                return (txt+'A');
            } else {
                var p = "";
                var q = "";
                if(u.length > 1){
                    p = u.substring(0, u.length - 1);
                    q = String.fromCharCode(p.slice(-1).charCodeAt(0));
                }
                var l = u.slice(-1).charCodeAt(0);
                var z = nextLetter(l);
                if(z==='A'){
                    return p.slice(0,-1) + nextLetter(q.slice(-1).charCodeAt(0)) + z;
                } else {
                    return p + z;
                }
            }
        }
        
        function nextLetter(l){
            if(l<90){
                return String.fromCharCode(l + 1);
            }
            else{
                return 'A';
            }
        }
        
        function same(str,char){
            var i = str.length;
            while (i--) {
                if (str[i]!==char){
                    return false;
                }
            }
            return true;
        }
    
    // below is simply for the html sample interface and is unrelated to the javascript solution
    
    var btn = document.getElementById('btn');
    var entry = document.getElementById('entry');
    var node = document.createElement("div");
    node.id = "node";
    
    btn.addEventListener("click", function(){
      node.innerHTML = '';
      var textnode = document.createTextNode(nextChar(entry.value));
      node.appendChild(textnode);
      document.body.appendChild(node);
    });
    <input id="entry" type="text"></input>
    <button id="btn">enter</button>

    0 讨论(0)
提交回复
热议问题