A problem encountered in work, two strings match, requirements: each string contains at most one *, and there can be infinitely multiple
* represents a string of any length, while ? represents a character
The requirement can prompt two conflicts
Copy the code as follows: <input type="text" id="str1"><br>
<input type="text" id="str2"><br>
<input type="button" onclick="checkMarchX()" value="CHECK">
The code to implement using JavaScript is as follows:
function checkMarchX(){var str1 = document.getElementById('str1').value;var str2 = document.getElementById('str2').value;var str1XPosition = str1.indexOf('*');var str2XPosition = str2.indexOf('*');if(str1XPosition!=-1 && str2XPosition!=-1)// Both contain *{var position = str1XPosition>str2XPosition?str2XPosition:str1XPosition;//successif(position!=0){var patbeforeStr1 = str1.substring(0,position);var patbeforeStr2 = str2.substring(0,position);if(checkMarchQ(patbeforeStr1,patbeforeStr2)){//alert(str1+' and '+str2+"conflict");//Then test the corresponding second half var str1XBackPosition = str1.length-str1XPosition-1;var str2XBackPosition = str2.length-str2XPosition-1;var backposition = str1XBackPosition>str2XBackPosition?str2XBackPosition:str1XBackPosition;if (backposition==0){alert(str1+' and '+str2+"conflict");}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+' and '+str2+"conflict");}}}}else{//alert(str1+' and '+str2+"conflict");var str1XBackPosition = str1.length-str1XPosition-1;var str2XBackPosition = str2.length-str2XPosition-1;var backposition = str1XBackPosition>str2XBackPosition?str2XBackPosition:str1XBackPosition;if (backposition==0){alert(str1+' conflicts with '+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+' conflicts with '+str2+" conflicts");}}}}else if((str1XPosition==-1 && str2XPosition!=-1)||(str1XPosition!=-1 && str2XPosition==-1))//There is only one string containing *{var strX = str1XPosition==-1?str2:str1;//The string containing * var strNoX = str1XPosition==-1?str1:str2;//The string without * if (strX.length-1<strNoX.length){var position = strX.indexOf('*');if(position==0){//alert(str1+' and '+str2+"conflict the first half");var backposition = strX.length-position-1;if (backposition==0){alert(str1+' conflicts with '+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+' conflicts with '+str2+" conflicts");}}}else{var patbeforeStr1 = str1.substring(0,position);var patbeforeStr2 = str2.substring(0,position);if(checkMarchQ(patbeforeStr1,patbeforeStr2)){//alert(str1+' and '+str2+"conflict the first half");var backposition = strX.length-position-1;if (backposition==0){alert(str1+' and '+str2+"conflict");}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+' and '+str2+"conflict");}}}}}}}else{if(checkMarchQ(str1,str2)){alert(str1+' and '+str2+"conflict");}}}}} function checkMarchQ(str1,str2){var flagque = false;if(str1.length==str2.length){ //Clashes are possible only if (var i=0 ;i<str1.length ;i++ ){if(str1.substr(i,1)!='?' && str2.substr(i,1)!='?'){if(str1.substr(i,1)!=str2.substr(i,1)){flagque = false;// means no conflict break;}else{flagque = true;// means conflict}}}} return flagque;}* is at least one character, and the above program does not verify the legality of the input.
To view more JavaScript syntax, you can follow: "JavaScript Reference Tutorial" and "JavaScript Code Style Guide". I also hope that everyone will support Wulin.com more.