Javascript:比较两个字符串,跳过不同的字符
javascript: compare two strings, skip character which is different
现在当它到达两个字符串之间不同的字符时停止。有没有办法让它跳过一个不比较的字符?
var match = function (str1, str2) {
str1 = str1.toString(); str2 = str2.toString();
for (var i = 0; i < str1.length; i++) {
for (var j = str1.length - i; j-1; j--) {
document.body.innerHTML += str1.substr(i, j);
if (str2.indexOf(str1.substr(i, j))!== -1) {
return str1.substr(i, j);
}
}
}
return '';
}
document.body.innerHTML += (match("/some[1]/where[1]/over[3]/here[1]", "/some[1]/where[1]/over[4]/here[1]"));
http://jsfiddle.net/92taU/3/期望:/some[1]/where[1]/over[]/here[1]
这是你想要的:
var match = function (str1, str2) {
str1 = str1.toString(); str2 = str2.toString();
ret=''; i=0; j=0; l=str1.length; k=0; m=0;
while(i<l && j<l)
{
// If char is equal just add!
if(str1[i]==str2[j])
{
ret+=str1[i];
i++;
j++;
} else {
// If it's different search next equal char...
for(k=i;k<l;k++)
{
for(m=j;m<l;m++)
{
if(str1[k]==str2[m])
{
// if char is found adjust indexes and break current for
i=k;
j=m;
k=l; // to break m for
break;
}
}
}
}
}
return ret;
}
document.body.innerHTML += (match("/some[1]/where[1]/over[3]/here[1]", "/some[1]/where[1]/over[4]/here[1]"));
它返回:
/some[1]/where[1]/over[]/here[1]
我假设你比较的两个字符串总是相同的长度。这里有一些代码,我认为应该做你想要的:
var match = function (str1, str2) {
var i = 0;
while (i < str1.length) {
if (str1.substr(i, 1) !== str2.substr(i, 1)) {
break;
}
i++;
}
if (i === str1.length) {
return str1;
} else {
return str1.substr(0, i) + match(str1.substr(i + 1), str2.substr(i + 1));
}
}
document.body.innerHTML += (match("/some[1]/where[1]/over[3]/here[1]", "/some[1]/where[1]/over[4]/here[1]"));
从每个字符串的开头开始,此代码查找最长的子字符串。当发现不匹配时,它获取匹配的子字符串,跳过下一个字符,并对每个字符串中的其余字符使用递归函数调用来重复该过程。
相关文章:
- 如何将字符串拆分为字符,但在javascript中保留空格
- 如何显示字符串中最多 200 个字符
- 我想在Javascript中探索类似C语言的字符串的整个字符
- 如何用jquery替换字符串中可能变化的字符
- 通过跳过拆分字符在 javascript 中拆分字符串
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 字符串替换-不支持格式字符'}'
- 到UpperCase字符串Javascript中的特定字符索引
- 用类javascript包装span标记中字符串中的字符索引
- 将字符串分组为n个字符的块,并应用替换
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- Regex-从字符第N次出现到字符串末尾的匹配
- Visual Studio 2010跳转到下一个任意字符/字符串
- 估计存储在 localStorage (Javascript) 中的 10,000 个字符字符串的大小
- 字符字符串中最后一个单词的第一个字母
- 匹配任何字符字符串的正则表达式,最多为“/”Javascript
- 将特殊字符字符串到 JSON 字符串化非法令牌中
- 在javascript中计算精确的字符字符串高度