比方说,用户给我们一个字符串“ 12345678”,很容易将每个数字分开。如果用户输入“ 899091929394”(2位数字系列),我将无法理解如何将长字符串分成2位数字。如果用户输入3位数字序列,该怎么办。
我的问题是:如何从长字符串中检测和分离多位数字?
结果应类似于Array = [89,90,91,92,93,94]
答案 0 :(得分:1)
这是您想要的:
const string = "899091929394";
const splittedString = string.match(/.{1,2}/g);
console.log(splittedString);
输出:
[ '89', '90', '91', '92', '93', '94' ]
如果要更改“分组依据”编号,请编辑正则表达式/.{1,2}/g
。
答案 1 :(得分:1)
您可以尝试分离,直到获得系列中的每个项目为止。
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));
答案 2 :(得分:0)
function seperateNDigitsFromNumber(numberInput, digitsCount) {
const regexString = new RegExp("\\d{1,"+digitsCount+"}", "g");
return numberInput
.match(regexString)
.map(stringNum => parseInt(stringNum, 10));
}
seperateNDigitsFromNumber("899091929394",2);