检查字符串是否包含子字符串而不使用indexOf - Javascript
Check if string contains substring without using indexOf - Javascript
我的函数正在尝试检查字符串是否包含子字符串而不使用indexOf或regex match
或任何标准JS方法。
请查看此jsfiddle: https://jsfiddle.net/09x4Lpj2/
var string1 = 'applegate';
var string2 = 'gate';
function containsString(string1, string2){
var j = 0;
var k = 0;
var contains = 'false';
var charArray1 = string1.split('');
var charArray2 = string2.split('');
for(var i = 0; i < charArray2.length; i++){
j = i;
if(charArray1[j++] != charArray2[k++]){
contains = 'false';
}else{
contains = 'true';
}
}
console.log(contains);
}
containsString(string1, string2);
此解决方案仅在两个字符串(例如applegate
和apple
)之间的索引相同时才有效。但如果索引不相同(例如applegate
和gate
),则不起作用。我如何正确地操作迭代值,使函数在两种情况下都返回true ?
你可以试试这个修改过的脚本。
var string1 = 'applegate';
var string2 = 'gate';
var string3 = 'apple';
var string4 = 'leg';
var string5 = 'banana';
function containsString(string1, string2){
var charArray1 = string1.split('');
var charArray2 = string2.split('');
var match = 0;
// iterate from start of 1st string until length of 1st string minus length of 2nd string
// you don't need to iterate the last part that is not longer than 2nd string since it will be false
for(var i = 0; i < charArray1.length - charArray2.length + 1; i++){
// reset match counter on every iteration
match = 0;
// iterate the 2nd string
for(var j = 0; j < charArray2.length; j++){
// compare corresponding char location
if(charArray1[i+j] == charArray2[j]){
match++;
// just to check in console
console.log(i, j, match, charArray1[i+j], charArray2[j]);
} else {
// just to check in console
console.log(i, j, match, charArray1[i+j], charArray2[j]);
// if not match, just skip current check
break;
}
// if match already found, stop the checks, and return true
if(match == charArray2.length){
return true;
}
}
}
// match not found until end of iteration
return false;
}
console.log(containsString(string1, string2));
console.log(containsString(string1, string3));
console.log(containsString(string1, string4));
console.log(containsString(string1, string5)); // haystack does not contain needle
console.log(containsString(string4, string1)); // haystack is shorter than needle
欢迎来到SO。Regex可以使用…除非这也是被禁止的……
function containsString(string1, string2){
console.log(string1.match(string2) != null ? "Yes" : "No");
}
正则表达式这段代码有一个逻辑问题,只能判断a的最后一个字符是否等于B的对应字符,也许下面的代码就是你想要的,加一行代码。
var string1 = 'applegate';
var string2 = 'gate';
function containsString(string1, string2){
var j = 0;
var k = 0;
var contains = 'false';
var charArray1 = string1.split('');
var charArray2 = string2.split('');
for(var i = 0; i < charArray2.length; i++){
j = i;
if(charArray1[j++] != charArray2[k++]){
contains = 'false';
break;
}else{
contains = 'true';
}
}
console.log(contains);
}
在不使用任何内置函数的情况下检查
function subSearch(long,short){
var count = 0
for(i = 0;i < long.length; i++){
for(j = 0;j < short.length; j++){
if(short[j] != long[i + j]){
break;
}
if((j+1) == short.length){
count++;
}
}
}
return count;
}
相关文章:
- 对字符串使用IndexOf来挑选某些单词
- 过度杀戮?使用indexOf()来发现字符串的内容
- Javascript - 如何使用 .indexOf 而不是开头查找特定字符串
- 数组表示形式内的字符串IndexOf
- JavaScript-使用indexOf()在字符串中搜索字符
- Google Sheets/Javascript:无法使用indexOf()在数组中搜索特定字符串
- Javascript:为什么要使用indexOf()来匹配字符串中的值
- 如何使用字符串的 indexOf 返回的值
- 多个字符串与 indexOf() 匹配
- 在字符串 javascript 中获取 indexOf char
- JavaScript indexOf 从搜索字符串的末尾
- indexOf,向上搜索字符串而不是向下搜索
- wysiwyg中的字符串IndexOf和Replace
- 使用indexOf检查的一个字符串多个变量
- tab.url.indexOf检查url是否在扩展中包含特定字符串
- 如何从字符串末尾开始计算indexof()
- javascript indexOf如何与字符串和数组不同地工作
- 字符串indexOf总是返回-1
- 如何搜索在iOS自动化脚本字符串中的子字符串?indexOf()和search()方法不工作
- Javascript字符串indexOf未按预期工作