gpt4 book ai didi

javascript - 如何使用javascript查找字符串中是否包含特定数量的连续连续数字?

转载 作者:数据小太阳 更新时间:2023-10-29 05:15:12 25 4
gpt4 key购买 nike

假设我想知道一个字符串是否包含5个或更多个连续的连续数字。

var a = "ac39270982"; // False
var a = "000223344998"; // False
var a = "512345jj7"; // True - it contains 12345
var a = "aa456780"; // True - it contains 45678

是否有 RegEx 可用于完成此操作?它是否也可以在以下情况下工作?

var a = "5111213141587"; // True

这应该是真的,因为它包含 11,12,13,14,15。

我不确定是否可以检查提供的示例(一位数、两位数)以及更大的数字(三位数等)。

最佳答案

我花时间对您的问题采用 100% Javascript 方法。我让它简单地解析字符串中的每个字符并只进行整数比较。这不仅适用于五个连续的整数,而且也适用于检查十分之一(10、20 等)。如果您愿意,您还可以增加/减少比较次数。

一个公平的警告:尽管如果编码以查找各种数字大小,此方法可能具有可扩展性,但您仍然会受到计算能力和比较次数的限制。这就是为什么我只提供了个位数和十分之一的代码,我将它留给你/社区来决定如何从这里扩展。

jsFiddle

如果您碰巧需要有关其工作原理的更多详细信息,请告诉我,我可以进一步阐明其内部工作原理。

var str = "1111122asdgas222*&^%121314151617bdjfjahdi234bdce56789";
var consecutive = 5; // Number of comparisons

// Single digits
alert("It is " + consecutiveDigits(str, consecutive) + " that " + str + " contains " + consecutive + " consecutive digits.");
// Tenths digits
alert("It is " + consecutiveDigits(str, consecutive) + " that " + str + " contains " + consecutive + " consecutive tenths.");

function consecutiveDigits(str, consecutive){
var curr,
prev,
count = 0;
for(var i = 0; i < str.length; ++i) {
curr = parseInt(str.split('')[i]);
if(isNumeric(curr)) {
if(count === 0){
++count;
}
else if(prev + 1 === curr){
++count;
if(count === consecutive){
return true;
}
}
prev = curr;
}
}
return false;
}

function consecutiveTenths(str, consecutive, iterations){
var curr,
prev,
curr_tenth = 0,
prev_tenth = 0,
count = 0,
count_tenth = 0;

for(var i = 0; i < str.length; ++i) {
curr = parseInt(str.split('')[i]);
if(isNumeric(curr)) {
++count;
if(count === iterations){
curr_digit = (prev * 10) + curr;
alert(count_digit + " " + curr_digit + " " + prev_tenth);
if(count_digit === 0){
++count_digit;
}
else if(curr_tenth === (prev_tenth + 1)){
++count_digit;
if(count_digit === consecutive){
return true;
}
}
prev_digit = curr_digit;
count = 0;
}
else {
prev = curr;
}
}
else {
count = 0;
}
}
}


function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}

关于javascript - 如何使用javascript查找字符串中是否包含特定数量的连续连续数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com