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

时间:2016-03-29 18:31:17

标签: javascript string algorithm

我试图检查字符串if (var < MagneticModels[0]->nMax).... 是否包含任何5个字符的子字符串b

这很有效,但有点乱:

a

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

2 个答案:

答案 0 :(得分:2)

您可以使用substringindexOf

a.substr(i, 5)

(您可以使用a.substring(i, i + 5)代替0。这两个调用的行为相同。)

请注意,如果您从a.length循环到a(与原始代码一样),则会在{{1}中搜索长度为5或更短的b的所有后缀}}

从某个方面来说,此代码的行为与原始代码不同:它只会针对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");
    }
}

答案 1 :(得分:1)

这是最干净的方法:

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

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