我试图检查字符串if (var < MagneticModels[0]->nMax)....
是否包含任何5个字符的子字符串b
。
这很有效,但有点乱:
a
还有其他更清洁的选择吗?
答案 0 :(得分:2)
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");
}
}