Javascript 如何在不使用indexOf的情况下在另一个字符串中匹配一个字符串?

Javascript 如何在不使用indexOf的情况下在另一个字符串中匹配一个字符串?,javascript,algorithm,Javascript,Algorithm,假设我有两个字符串,a&b var a = 'john.smith@yahoo.com'; var b = 'yahoo12345556'; 我所期望的结果是yahoo,但使用a.indexOf(b)会给我-1 如果我把b改为yahoo&doa.indexOf(b),它显然不会给我-1 我应该在循环中匹配字符吗?但是这两个字符串的长度不相等。字符的顺序也很重要,我不是在寻找字符的出现 看来你在找问题。 这里有一个解释 看来你在找问题。 这里有一个解释 您可以使用递归来解决此问题: functi

假设我有两个字符串,
a
&
b

var a = 'john.smith@yahoo.com';
var b = 'yahoo12345556';
我所期望的结果是
yahoo
,但使用
a.indexOf(b)
会给我
-1

如果我把
b
改为
yahoo
&do
a.indexOf(b)
,它显然不会给我
-1


我应该在循环中匹配字符吗?但是这两个字符串的长度不相等。字符的顺序也很重要,我不是在寻找字符的出现

看来你在找问题。
这里有一个解释

看来你在找问题。
这里有一个解释

您可以使用递归来解决此问题:

function findLongestCommon (a, b, len) {
    for (var i = 0; i < a.length-1; i=i+len) {
        var sub = a.substring(i, len)
        if (len == 0){
            return "";
        }
        else if (sub.indexOf(b) != -1) {
            return a;
        }
        else{
            return findLongestCommon(a, b, len-1);
        }
}
函数findLongestCommon(a、b、len){
对于(变量i=0;i

通过调用findLongestCommon(a,b,a.length),您将能够遍历从最大字母(整个字符串)到最小字母(一个字母)的每个字母组合,如果没有找到字母,它将返回空字符串。

您可以使用递归来解决此问题:

function findLongestCommon (a, b, len) {
    for (var i = 0; i < a.length-1; i=i+len) {
        var sub = a.substring(i, len)
        if (len == 0){
            return "";
        }
        else if (sub.indexOf(b) != -1) {
            return a;
        }
        else{
            return findLongestCommon(a, b, len-1);
        }
}
函数findLongestCommon(a、b、len){
对于(变量i=0;i

通过调用findLongestCommon(a,b,a.length),您将能够遍历每个字母组合,从最大的(整个字符串)到最小的(一个字母)如果没有找到字母,它将返回空字符串。

因此,请找到两个变量之间的公共子字符串?匹配条件是什么?两者之间最长的匹配子字符串?准确地说,与搜索字符串在原始字符串中的位置无关。问题在于潜在交集很大…yahoo上的o也是john的一部分,就像yahoo中的h是smith的一部分,等等。因此,请在这两个变量之间找到一个共同的子字符串?您的匹配标准是什么?两者之间最长的匹配子字符串?确切地说,与搜索字符串在原始字符串中的位置无关。您的问题是潜在的交集很大…雅虎上的o也是john的一部分,就像雅虎上的h是smith的一部分,等等。在问题标题中:“不使用indexOf”。@hatchet我认为用户的意思不是“不使用indexOf”,而是“我尝试了indexOf,但它不起作用,有更好的想法吗?”。实现目标的最简单、最快捷的方法是使用递归和indexOf。如果你有更好的答案,请发布。在问题标题中:“不使用indexOf”。@hatchet我认为用户的意思不是“不使用indexOf”,而是“我尝试了indexOf,但它不起作用,有更好的想法吗?”。实现目标最简单、最快捷的方法是使用递归和索引。如果您有更好的答案,请发布。