кодесурса
«JavaScript

JavaScript: получить преемник строки

script1adsense2code
script1adsense3code

Строка JavaScript: упражнение 48 с решением

Напишите функцию JavaScript, чтобы получить преемник строки.

Примечание. Преемник вычисляется путем приращения символов, начиная с крайнего правого буквенно-цифрового (или крайнего правого символа, если буквенно-цифровые символы отсутствуют) в строке. Увеличение цифры всегда приводит к другой цифре, а увеличение буквы - к другой букве того же регистра. Если приращение генерирует перенос, символ слева от него увеличивается. Этот процесс повторяется до тех пор, пока нет переноса, добавляя дополнительный символ при необходимости.

Пример :
string.successor ("abcd") == "abce"
string.successor ("THX1138") == "THX1139"
string.successor ( "< > ") ==" <
string.successor ("1999zzz") == "2000aaa"
string.successor ("ZZZ9999") == "AAAA0000"

Тестовые данные :
console.log (преемник ( 'ABCD'));
console.log (преемник ( '3456'));
"ABCE"
"3457"

Пример решения: -

HTML-код:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JavaScript function to get the successor of a string</title>
</head>
<body>
</body>
</html>

Код JavaScript:

function successor(str) {
        var alphabet ='abcdefghijklmnopqrstuvwxyz',
            length = alphabet.length,
            result = str,
            i = str.length;
        while(i >= 0) {
            var last = str.charAt(--i),
                next = '',
                carry = false;
            if (isNaN(last)) {
                index = alphabet.indexOf(last.toLowerCase());
                if (index === -1) {
                    next = last;
                    carry = true;
                }
                else {
                    var isUpperCase = last === last.toUpperCase();
                    next = alphabet.charAt((index + 1) % length);
                    if (isUpperCase) {
                        next = next.toUpperCase();
                    }
                    carry = index + 1 >= length;
                    if (carry && i === 0) {
                        var added = isUpperCase ? 'A' : 'a';
                        result = added + next + result.slice(1);
                        break;
                    }
                }
            }
            else {
                next = +last + 1;
                if(next > 9) {
                    next = 0;
                    carry = true;
                }
                if (carry && i === 0) {
                    result ='1' + next + result.slice(1);
                    break;
                }
            }
            result = result.slice(0, i) + next + result.slice(i + 1);
            if (!carry) {
                break;
            }
        }
        return result;
    }
console.log(successor('abcd'));
console.log(successor('3456'));

Пример вывода:

 ABCE
3457

Блок - схема:

«Блок-схема:

Демонстрация в реальном времени:

См. Pen JavaScript. Получите преемник string-string-ex-48 от w3resource ( @ w3resource ) в CodePen .


Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Напишите функцию JavaScript, чтобы проверить, заканчивается ли строка указанной строкой.
Далее: Напишите функцию JavaScript для получения уникального guid (сокращение от «Globally Unique Identifier») указанной длины или 32 по умолчанию.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code