JavaScript
发布时间:2022-04-16 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JavaScript中两个字符串的匹配,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
工作中遇到一个问题,两个字符串匹配,要求:每个字符串中最多含有一个*,?可以无限多个
*代表一个任意长度的字符串,而?则代表一个字符
要求可以提示出两个冲突
用JavaScript实现代码如下:
str2XPosition?str2XPosition:str1XPosition;//
success
if(position!
=0)
{
var patbeforeStr1 = str1.sub
String(0,position
);
var patbeforeStr2 = str2.sub
String(0,position
);
if(
checkMarchQ(patbeforeStr1,patbeforeStr2))
{
//alert(str1+'与'+str2+"前半部分冲突"
);
//然后对应后半部分进行测试
var str1X
BACkPosition = str1.length-str1XPosition-1;
var str2X
BACkPosition = str2.length-str2XPosition-1;
var
BACkposition = str1X
BACkPosition>str2X
BACkPosition?str2X
BACkPosition:str1X
BACkPosition;
if (
BACkposition=
=0)
{
alert(str1+'与'+str2+"冲突"
);
}
else
{
var pat
BACkStr1 = str1.sub
String(str1.length-
BACkposition,str1.length
);
var pat
BACkStr2 = str2.sub
String(str2.length-
BACkposition,str2.length
);
if(
checkMarchQ(pat
BACkStr1,pat
BACkStr2))
{
alert(str1+'与'+str2+"冲突"
);
}
}
}
}
else
{
//alert(str1+'与'+str2+"前半部分冲突"
);
var str1X
BACkPosition = str1.length-str1XPosition-1;
var str2X
BACkPosition = str2.length-str2XPosition-1;
var
BACkposition = str1X
BACkPosition>str2X
BACkPosition?str2X
BACkPosition:str1X
BACkPosition;
if (
BACkposition=
=0)
{
alert(str1+'与'+str2+"冲突"
);
}
else
{
var pat
BACkStr1 = str1.sub
String(str1.length-
BACkposition,str1.length
);
var pat
BACkStr2 = str2.sub
String(str2.length-
BACkposition,str2.length
);
if(
checkMarchQ(pat
BACkStr1,pat
BACkStr2))
{
alert(str1+'与'+str2+"冲突"
);
}
}
}
}
else if((str1XPosition==-1 && str2XPosition
!=-1)||(str1XPosition
!=-1 && str2XPosition==-1))//有且只有一个字符串含有*
{
var strX = str1XPosition==-1?str2:str1;//含有*的字符串
var strNoX = str1XPosition==-1?str1:str2;//不含*的字符串
if (strX.length-1
{
var position = strX.indexOf('*');
if(position==0)
{
//alert(str1+'与'+str2+"前半部分冲突");
var BACkposition = strX.length-position-1;
if (BACkposition==0)
{
alert(str1+'与'+str2+"冲突");
}
else
{
var patBACkStr1 = str1.subString(str1.length-BACkposition,patBACkStr2))
{
alert(str1+'与'+str2+"冲突");
}
}
}
else
{
var patbeforeStr1 = str1.subString(0,position);
var patbeforeStr2 = str2.subString(0,position);
if(checkMarchQ(patbeforeStr1,patbeforeStr2))
{
//alert(str1+'与'+str2+"前半部分冲突");
var BACkposition = strX.length-position-1;
if (BACkposition==0)
{
alert(str1+'与'+str2+"冲突");
}
else
{
var patBACkStr1 = str1.subString(str1.length-BACkposition,str1.length);
var patBACkStr2 = str2.subString(str2.length-BACkposition,str2.length);
if(checkMarchQ(patBACkStr1,patBACkStr2))
{
alert(str1+'与'+str2+"冲突");
}
}
}
}
}
}
else
{
if(checkMarchQ(str1,str2))
{
alert(str1+'与'+str2+"冲突");
}
}
}
function checkMarchQ(str1,str2)
{
var flagque = false;
if(str1.length==str2.length)
{
//长度相同才有可能冲突
for (var i=0 ;i{
if(str1.substr(i,1)!='?' && str2.substr(i,1)!='?')
{
if(str1.substr(i,1)!=str2.substr(i,1))
{
flagque = false;//表示不冲突
break;
}
else
{
flagque = true;//表示冲突
}
}
}
}
return flagque;
}
其中*最起码为一个字符,以上程序并没有对输入的合法性进行验证
查看更多JavaScript的语法,大家可以关注:《》、《》,也希望大家多多支持菜鸟教程。
大佬总结
以上是大佬教程为你收集整理的JavaScript中两个字符串的匹配全部内容,希望文章能够帮你解决JavaScript中两个字符串的匹配所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。