Что такое метод, который можно использовать для увеличения букв?

Кто-нибудь знает библиотеку Javascript (например, underscore, jQuery, MooTools и т.д.), которая предлагает метод увеличения буквы?

Я хотел бы сделать что-то вроде:

"a"++; // would return "b"
63
задан andyzinsser 20 сент. '12 в 1:57
источник поделиться
7 ответов
function nextChar(c) {
    return String.fromCharCode(c.charCodeAt(0) + 1);
}
nextChar('a');
107
ответ дан Nathan Wall 20 сент. '12 в 2:00
источник поделиться

Обычный javascript должен сделать трюк:

String.fromCharCode('A'.charCodeAt() + 1) // Returns B
33
ответ дан Zar 20 сент. '12 в 2:00
источник поделиться

Что делать, если данное письмо является z? Вот лучшее решение. Он идет A, B, C... X, Y, Z, AA, AB,... и т.д. В основном он увеличивает буквы, такие как идентификатор столбца таблицы Excel.

nextChar ( 'уг');//возвращает "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>
9
ответ дан Ron Royston 27 дек. '15 в 21:18
источник поделиться

Мне нужно было использовать последовательности букв несколько раз, и поэтому я сделал эту функцию на основе этого вопроса SO. Надеюсь, это поможет другим.

function charLoop(from, to, callback)
{
    var i = from.charCodeAt(0);
    var to = to.charCodeAt(0);
    for(;i<=to;i++) callback(String.fromCharCode(i));
}
  • from - начать письмо
  • - последняя буква
  • функция обратного вызова (письма) - для каждой буквы в Последовательность

Как использовать его:

charLoop("A", "K", function(char) {
    //char is one letter of the sequence
});

См. эту рабочую демонстрацию

3
ответ дан letiagoalves 22 авг. '13 в 16:05
источник поделиться

Вы можете попробовать это

console.log( 'a'.charCodeAt​(0))​

Сначала преобразуйте его в номер Ascii.. Увеличьте его.. затем конвертируйте из Ascii в char..

var nex = 'a'.charCodeAt(0);
console.log(nex)
$('#btn1').on('click', function() {
   var curr = String.fromCharCode(nex++)
   console.log(curr)
});

Отметьте FIDDLE

2
ответ дан Sushanth -- 20 сент. '12 в 2:00
источник поделиться

Добавление всех этих ответов:

// first code on page
String.prototype.nextChar = function(i) {
    var n = i | 1;
    return String.fromCharCode(this.charCodeAt(0) + n);
}

String.prototype.prevChar = function(i) {
    var n = i | 1;
    return String.fromCharCode(this.charCodeAt(0) - n);
}

Пример: http://jsfiddle.net/pitaj/3F5Qt/

2
ответ дан PitaJ 20 сент. '12 в 2:10
источник поделиться

Это хорошо работает:

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'
1
ответ дан NikK 30 окт. '16 в 19:02
источник поделиться

Другие вопросы по меткам