检查长度为5的子字符串是否在另一个字符串中(已重构)
checking if a substring of length 5 is in another string (refactored)
我正在尝试检查字符串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");
}
}
}
还有其他更清洁的选择吗?
您可以使用substring
和indexOf
:
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
(如原始代码中所示),则将在b
中搜索长度为5或更小的a
的所有后缀。
在一个方面,此代码的行为与原始代码不同:对于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");
}
}
这是最干净的方法:
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");
}
}
相关文章:
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 如何使用另一个字符串作为模板从字符串中提取数据
- 用jQuery将字符串从一个类替换为另一个类
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- 用PHP读取另一个网站的源代码,并将其作为字符串提供给JavaScript
- 如何拆分一个字符串,然后将它们与另一个字符串匹配
- 将 url 中的一个字符串替换为另一个字符串
- 通过另一个对象上的字符串值为 javascript 对象属性赋值
- 从包含另一个函数的字符串变量中返回一个函数
- 在另一个由非字母数字字符分隔的字符串中搜索(任何)字符串
- 单击另一个锚点标记时,从锚点标记获取字符串值
- 在javascript中比较另一个字符串中的子字符串
- 转换一个时间(字符串),例如1:00 IST到另一个时区(比如PST)
- 我正在尝试用另一个字符串替换一个字符串
- 如何将jQuery中某个函数的字符串作为参数返回给另一个jQuery函数
- 单击一个具有字符串名称的类以激活另一个类
- 检查长度为5的子字符串是否在另一个字符串中(已重构)
- 将变量与字符串连接以定义另一个变量
- 检查另一个字符串 JavaScript 中一个字符串是否有任何字符的最佳方法