2

我的函数试图检查字符串是否包含未使用indexOf或regex的子字符串比赛或任何标准JS方法。

请检查此jsfiddle:https://jsfiddle.net/09x4Lpj2/

var字符串1='applegate';var string2=“门”;函数包含字符串(字符串1,字符串2){var j=0;var k=0;var包含='false';var charArray1=字符串1.split('');var charArray2=字符串2.split(“”);for(var i=0;i<charArray2.length;i++){j=i;if(字符数组1[j++]!=字符数组2[k++]){contains=“false”;}其他{contains=“true”;}   }console.log(包含);}containsString(字符串1,字符串2);

只有当两个字符串(例如。苹果酱苹果). 但如果索引不相同(例如。苹果酱大门). 如何正确地操作迭代值,以便函数在两种情况下都返回true?

4个答案4

重置为默认值
4

你可以试试这个修改过的脚本。

var字符串1=“应用程序”;var string2=“门”;var string3=“苹果”;var字符串4=“腿”;var string5=“香蕉”;函数containsString(字符串1,字符串2){var charArray1=字符串1.split(“”);var charArray2=字符串2.split(“”);var匹配=0;//从第一个字符串的开始迭代到第一个字符串长度减去第二个字符串长度//您不需要迭代长度不超过第二个字符串的最后一部分,因为它将为falsefor(var i=0;i<charArray1.length-charArray 2.length+1;i++){//每次迭代时重置匹配计数器匹配=0;//迭代第二个字符串对于(var j=0;j<charArray2.length;j++){//比较相应的字符位置如果(字符数组1[i+j]==字符数组2[j]){匹配++;//只是为了登录控制台控制台.log(i,j,匹配,字符数组1[i+j],字符数组2[j]);}其他{//只是为了登录控制台控制台.log(i,j,匹配,字符数组1[i+j],字符数组2[j]);//如果不匹配,则跳过当前检查断裂;}//如果已经找到匹配项,则停止检查并返回trueif(match==charArray2.长度){返回true;}}}//迭代结束前未找到匹配项返回false;}console.log(containsString(string1,string2));console.log(containsString(string1,string3));console.log(containsString(字符串1,字符串4));console.log(containsString(string1,string5));//干草堆里没有针console.log(containsString(string4,string1));//干草堆比针还短

1
  • 谢谢你。这真的很有帮助。特别是对于不支持indexOf方法的环境,如IE<9等。。。 评论 2017年5月30日7:54
1

欢迎来到SO。可以使用Regex。。除非这也是被禁止的。。

函数containsString(字符串1,字符串2){console.log(字符串1.match(字符串2)!=无效的?“是”:“否”);}

Regex公司

  • 1
    感谢您提供替代解决方案:)然而,我正在尽力避免正则表达式比赛或任何其他方法,以便我可以为这种情况开发算法。
    – 夸勒
    评论 2016年10月17日0:34
  • 如果字符串2包含regex元字符,如.*[]() 评论 2016年10月17日0:37
  • 雅同意了。但显然Regex是不可能的。。所以这不是答案。。只是一个起点。:)
    – 搜索
    评论 2016年10月17日0:40
0

这个代码有一个逻辑问题,只是为了确定a的最后一个字符是否等于B的对应字符,也许下面的代码就是你想要的,添加一行代码。

var字符串1='applegate';var string2=“门”;函数containsString(字符串1,字符串2){var j=0;var k=0;var包含='false';var charArray1=字符串1.split(“”);var charArray2=字符串2.split(“”);for(变量i=0;i<charArray2.length;i++){j=i;if(字符数组1[j++]!=字符数组2[k++]){contains=“false”;断裂;}其他{contains=“true”;}   }console.log(包含);}
0

在不使用任何内置函数的情况下对此进行检查

函数subSearch(长、短){var计数=0对于(i=0;i<long.length;i++){对于(j=0;j<短长度;j++){if(短[j]!=长[i+j]){断裂;}如果((j+1)==短长度){计数++;}}}返回计数;}

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.