想知道字符串的子字符串是否在另一个字符串中。
例如......
var firstString= test123;
var secondString= nest145;
var thirdString= test456;
var fourString= teating456;
结果应该是在比较firstString和secondString
之后 est1
匹配。
结果应该在比较firstString和thirdString
之后 test
匹配。
结果应该是在比较firstString和fourString
之后 No match found.
限制检查字长可以决定。对于上面的例子,它是4
答案 0 :(得分:3)
这是一个简单的示例,其中匹配的字母需要紧接着相邻。
var firstString = 'test123';
var secondString = 'nest145';
var thirdString = 'test456';
var fourString = 'teating456';
function findMatchedChars(str1, str2, limit) {
var result = '', s1 = str1, s2 = str2;
if (str2.length > str1.length) {
s1 = str2;
s2 = str1;
}
for (var x = 0; x < s1.length; x++) {
if (s1[x] == s2[x]) {
result += s1[x];
} else {
if (result.length > 0 && result.length >= limit) return result;
result = '';
}
}
if (result.length > 0 && result.length >= limit) return result;
return 'No matches';
}
alert(findMatchedChars(firstString,secondString,4));
alert(findMatchedChars(firstString,thirdString,4));
alert(findMatchedChars(firstString,fourString,4));
答案 1 :(得分:0)
这是牵引绳的LCS问题...... LCS
答案 2 :(得分:0)
这是正则表达式版本:
var firstString = 'test123';
var secondString = 'nest145';
var thirdString = 'test456';
var fourString = 'teating456';
function findDups(str1, str2, limit) {
var re = '.*([^\\s]{' + limit + '}).*\\s+.*\\1.*'
var m = (str1 + " " + str2).match(re)
if (m != null) {
alert(m[1])
} else
alert('No matches')
}
findDups(firstString, secondString, 4)
findDups(firstString, thirdString, 4)
findDups(firstString, fourString, 4)