我们只想说我有两个字符串,a
& b
。
var a = 'john.smith@yahoo.com';
var b = 'yahoo12345556';
我期待的结果是yahoo
,但使用a.indexOf(b)
会给我-1
。
如果我将b
更改为yahoo
&做a.indexOf(b)
,它显然不会给我-1
。
我应该在循环中匹配字符吗?但是这两个字符串的长度不相等。字符应该按顺序排列也很重要,我不是在寻找字符的出现。
答案 0 :(得分:2)
看来你正在寻找Longest Common Substring问题。 这是good javascript implementation的解释。
答案 1 :(得分: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,a.length),您将能够查看从最大(整个字符串)到最小(一个字母)开头的每个字母组合,如果没有找到任何字母,它将会返回空字符串。