Javascript обнаружение двухзначных чисел в строке - PullRequest
0 голосов
/ 05 марта 2019

Допустим, пользователь дает нам строку «12345678», которую легко отделить от каждой цифры.Если пользователь вводит «899091929394» (серия из 2 цифр), я не могу понять, как разделить длинную строку на 2 цифры.Далее, что делать, если пользователь вводит 3-значный ряд чисел.

Мой вопрос: как обнаружить и отделить многозначные числа от длинной строки?

Результат должен выглядеть как Array = [89,90,91,92,93,94]

Ответы [ 3 ]

1 голос
/ 05 марта 2019

Вы можете попытаться отделиться, пока не получите каждый элемент в серии.

function separate(s) {
    var i = 1,
        temp;
    
    while (i < s.length) {
        temp = s.match(new RegExp(`.{${i}}`, 'g')).map(Number);
        if (temp.every((v, i, a) => !i || a[i - 1] + 1 === v || a[i - 1] + 2 === v)) {
            return temp;
        }
        i++;
    }
}


var strings = ["12345678", "8788909192", "899091929394", "234235236237238239"],
    result = strings.map(separate);

result.forEach(a => console.log(...a));
1 голос
/ 05 марта 2019

Вот что вы хотите:

const string = "899091929394";

const splittedString = string.match(/.{1,2}/g);

console.log(splittedString);

ВЫХОД:

[ '89', '90', '91', '92', '93', '94' ]

Если вы хотите изменить число «группировать по», отредактируйте регулярное выражение /.{1,2}/g.

0 голосов
/ 05 марта 2019

function seperateNDigitsFromNumber(numberInput, digitsCount) {
        const regexString = new RegExp("\\d{1,"+digitsCount+"}", "g");
        return numberInput
        .match(regexString)
        .map(stringNum => parseInt(stringNum, 10));
}

seperateNDigitsFromNumber("899091929394",2);
Пример: seperateNDigitsFromNumber ("899091929394", 2) => [89, 90, 91, 92, 93, 94]
...