gpt4 book ai didi

javascript - 检查长度为 5 的子字符串是否在另一个字符串中(重构)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:44 25 4
gpt4 key购买 nike

我正在尝试检查字符串 b 是否包含任何 5 个字符的子字符串 a

这可行,但有点乱:

var a = "1eabcde";
var b = "12abcde12fg";

for(var i=0; i<a.length; i++){
for(var j=i;j<a.length-i;j++){
if(a.charAt(j) == b.charAt(i) && a.charAt(j+1) == b.charAt(i+1) && a.charAt(j+2) == b.charAt(i+2) && a.charAt(j+3) == b.charAt(i+3) && a.charAt(j+4) == b.charAt(i+4)){
alert("ya");
}
}
}

还有其他更清洁的选择吗?

最佳答案

您可以使用 substringindexOf :

var a = "1eabcde";
var b = "12abcde12fg";

for (var i = 0; i <= a.length - 5; i++) {
if (b.indexOf(a.substring(i, i + 5)) >= 0) {
alert("ya");
}
}

(您可以使用 a.substr(i, 5) 而不是 a.substring(i, i + 5)。这两个调用的行为相同。)

请注意,如果您从 0 循环到 a.length(如在您的原始代码中),则 a 的所有后缀长度将在 b 中搜索 5 或更少。

在一方面,此代码的行为与您的原始代码不同:对于 a 的每个匹配子字符串,它只会发出一次警报,而不管该特定子字符串在 中出现了多少次>b。因此,如果 a = 'abcde'b = '01abcde23abcde45,您的原始代码将弹出两个警报(每次出现 'abcde'), 而上面只会提醒一次。如果您想要原始行为,请将 if 更改为 while,如下所示:

for (var i = 0; i <= a.length - 5; i++) {
var j = -1;
while ((j = b.substring(j+1).indexOf(a.substr(i, 5))) >= 0) {
alert("ya");
}
}

关于javascript - 检查长度为 5 的子字符串是否在另一个字符串中(重构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292342/

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