在比较字符串时需要帮助

时间:2011-07-08 16:09:05

标签: javascript html

需要帮助检查文本是否包含要搜索的字符串。

说我有文字

  

“somerandomtextstringexampleexample_1”

我想比较一下这个String

  

“example_1_e23wet_est1”

现在因为文字包含“example_1”我希望该功能返回“example_1”也是“示例”。 (但是如果字符串是“example_4_e23wet_est1”那么它应该只返回“example”

因此该函数需要2个参数

function searchForString(text,stringToCompare){
var foundstring;
...
if(foundstring)
return foundstring//In this case "example_1"
}

但是,由于“indexOf”在这里不起作用,我很遗憾如何继续这里。

提前致谢=)

2 个答案:

答案 0 :(得分:1)

如果您想要最大的公共子字符串,可能需要查看此处:largest common substring implementation并在此discussion about suffix tree for that matter:)

答案 1 :(得分:0)

调用 searchForString(“somerandomtextstringexampleexample_1”,“example_1_e23wet_est1”);

返回匹配列表。 例如在这种情况下:[“e”,“ex”,“example”,“e”,“example_1”,“e”] ...... 拿最好的。

function searchForString(text, searchString) {
    var i, max, match = '', matches = [], str;

    function matchingStr(string, searchString) {
        var i = 0, 
            j = 0, 
            matchStr = '',
            strLength = string.length,
            sstrLength = searchString.length;

        while (string[i] === searchString[j] &&
               i < strLength &&
               j < sstrLength) {

            matchStr += string[i];
            i++;
            j++;
        }

        return matchStr;
    }

    for (i = 0, max = text.length; i < max; i++) {
        str = (i === 0) ? text : text.slice(i, max);
        console.log("str: " + str);
        console.log(match);
        match = matchingStr(str, searchString);    

        if (match.length !== 0) {
            matches.push(match);
        }         
    }    
  return matches;
}