如:USB 1000 / 1200 / 1600dpi Wired Optical Gaming Mouse - Black (140cm-Cable)
USB 1000 / 1200 / 1600dpi Wired Optical Gaming Mouse - Black 可以匹配
Mouse - Black (140cm-Cable)1 不可以匹配,匹配必须以一个单词作为一个整体,(140cm-Cable)和(140cm-Cable)1不可以匹配
匹配时必须以一个单词做为整体和上面匹配,
直接用 contain或者 indexof 就可以判断是否匹配子集
这个方法显然是不行的,(140cm-Cable)和(140cm-Cable)1不可以匹配,这2个方法明显能匹配的上
正则表达式我没有研究出来,不过自己写了个方法,不过效率不是很好,
private int ArrayListMatchs(ArrayList modifyArrs, ArrayList originalArrs)
{
if (modifyArrs.Count < originalArrs.Count)
{
return -1;
}
for (int j = 0; j < modifyArrs.Count; j++)
{
if (originalArrs[0].Equals(modifyArrs[j]))
{
if (ArrayListMatchs(modifyArrs, originalArrs, j))
{
return j;
}
}
}
return -1;
}
private bool ArrayListMatchs(ArrayList modifyArrs, ArrayList originalArrs, int modifyArrsIndex)
{
if (modifyArrsIndex + originalArrs.Count > modifyArrs.Count)
{
return false;
}
int j = modifyArrsIndex;
bool flag = true;
for (int i = 0; i < originalArrs.Count; i++)
{
if (!modifyArrs[j].Equals(originalArrs[i]))
{
flag = false;
break;
}
j++;
}
return flag;
}