/*
* Noah Becker
* acsl competition search
* 2/8/11
* period 2 CS1
*/
import
java.util.Scanner;
import
java.io.IOException;
import
java.io.File;
import
java.lang.String;
public class
SearchClient
{
public static void main(String[] args)
throws IOException
{
//connecting to the file
String pathToFile =
"Z:/CS1/Programs/Search";
File inFile = new File(pathToFile,
"search.txt");
Scanner inData = new Scanner(inFile);
//declaring variables
String str1 = inData.next(), str2 =
inData.next(), str3= inData.next(), str4= inData.next(), search, solution;
inData.nextLine();
//developing an algorithm to manipulate
the input
for(int start = 0; start <= 4;
start++)
{
solution
= "";
search
= inData.nextLine();
if(search.startsWith("*")
&& !search.contains("?"))
solution
= search(str1, str2, str3, str4, search, solution);
else
if(search.endsWith("*") && !search.contains("?"))
solution
= search1(str1, str2, str3, str4, search, solution);
else
if(search.startsWith("?") && !search.endsWith("*"))
solution
= search2(str1, str2, str3, str4, search, solution);
else if(search.endsWith("?")
&& !search.startsWith("*"))
solution
= search3(str1, str2, str3, str4, search, solution);
else
if(search.contains("?") && !search.startsWith("?")
&& !search.endsWith("?") &&
!search.contains("*"))
solution = search4(str1, str2, str3,
str4, search, solution);
else
if(search.startsWith("?") && search.endsWith("*"))
solution
= search5(str1, str2, str3, str4, search, solution);
else
if(search.startsWith("*") && search.endsWith("?"))
solution
= search6(str1, str2, str3, str4, search, solution);
else
if(search.startsWith("*") &&
search.contains("?")&& !search.startsWith("?")
&& !search.endsWith("?"))
solution
= search7(str1, str2, str3, str4, search, solution);
else
if(search.endsWith("*") &&
search.contains("?")&& !search.startsWith("?")
&& !search.endsWith("?"))
solution
= search8(str1, str2, str3, str4, search, solution);
printsearchresults(solution);
}
}
//this method will find out what words are
appropriate for a search that starts with an asterisk
public static String search(String s1,
String s2, String s3, String s4, String s, String so)
{
if(s1.endsWith(s.substring(1,
s.length())))
so = s1;
if(s2.endsWith(s.substring(1,
s.length())))
so = (so + " " +
s2);
if(s3.endsWith(s.substring(1,
s.length())))
so = (so + " " +s3);
if(s4.endsWith(s.substring(1,
s.length())))
so = (so + " " +
s4);
return so;
}
//this method will find out what words are
appropriate for a search that ends with an asterisk
public static String search1(String s1,
String s2, String s3, String s4, String s, String so)
{
if(s1.startsWith(s.substring(0,
s.length() - 1)))
so = s1;
if(s2.startsWith(s.substring(0,
s.length() - 1)))
so = (so + " " +
s2);
if(s3.startsWith(s.substring(0,
s.length() - 1)))
so = (so + " " +
s3);
if(s4.startsWith(s.substring(0,
s.length() - 1)))
so = (so + " " +
s4);
return so;
}
//this method will find out what words are
appropriate for a search that starts with a ?
public static String search2(String s1,
String s2, String s3, String s4, String s, String so)
{
if(s1.substring(1,
s1.length()).equals(s.substring(1, s.length())) && s1.length() ==
s.length())
so = s1;
if(s2.substring(1,
s2.length()).equals(s.substring(1, s.length()))&& s1.length() ==
s.length())
so = (so + " " +
s2);
if(s3.substring(1,
s3.length()).equals(s.substring(1, s.length()))&& s1.length() ==
s.length())
so = (so + " " +
s3);
if(s4.substring(1,
s4.length()).equals(s.substring(1, s.length()))&& s1.length() ==
s.length())
so = (so + " " +
s4);
return so;
}
//this method will find out what words are
appropriate for a search that ends with a ?
public static String search3(String s1,
String s2, String s3, String s4, String s, String so)
{
if(s1.substring(0, s1.length() -
1).equals(s.substring(0, (s.length() - 1))) &&
s1.length() ==
s.length())
so = (s1);
if(s2.substring(1, s2.length() -
1).equals(s.substring(0, (s.length() - 1))) &&
s2.length() ==
s.length())
so = (so + " " +
s2);
if(s1.substring(1, s3.length() -
1).equals(s.substring(0, (s.length() - 1))) &&
s3.length() == s.length())
so = (so + " " +
s3);
if(s1.substring(1, s4.length() -
1).equals(s.substring(0, (s.length() - 1))) &&
s4.length() ==
s.length())
so = (so + " " +
s4);
return so;
}
//this method will find out what words are
appropriate for a search that has a ? in it
public static String search4(String s1,
String s2, String s3, String s4, String s, String so)
{
String s11 = s1;
s1 =
s1.replace(s1.substring(s.indexOf("?"), s.indexOf("?") +
1), "");
String s22 = s2;
s2 = s2.replace(s2.substring(s.indexOf("?"),
s.indexOf("?") + 1), "");
String s33 = s3;
s3 =
s3.replace(s3.substring(s.indexOf("?"), s.indexOf("?") +
1), "");
String s44 = s4;
s4 =
s4.replace(s4.substring(s.indexOf("?"), s.indexOf("?") +
1), "");
s = s.replace("?",
"");
if(s.equals(s1))
so = s11;
if(s.equals(s2))
so = so + " " + s22;
if(s.equals(s3))
so = so + " " + s33;
if(s.equals(s4))
so = so + " " + s44;
return so;
}
//this method will find out what words are
appropriate for a search that starts with a ? and ends with a *
public static String search5(String s1,
String s2, String s3, String s4, String s, String so)
{
if(s1.substring(1, (s.length() -
1)).equals(s.substring(1, (s.length() - 1))))
so = (s1);
if(s2.substring(1, (s.length() -
1)).equals(s.substring(1, (s.length() - 1))))
so = (so + " " +
s2);
if(s3.substring(1, (s.length() -
1)).equals(s.substring(1, (s.length() - 1))))
so = (so + " " +
s3);
if(s4.substring(1, (s.length() -
1)).equals(s.substring(1, (s.length() - 1))))
so = (so + " " +
s4);
return so;
}
//this method will find out what words are
appropriate for a search that ends with a ? and starts with a *
public static String search6(String s1,
String s2, String s3, String s4, String s, String so)
{
if(s1.length() >= s.length())
{
if(s.substring(1, (s.length()
- 1)).equals(s1.substring((s1.length() - (s.length() - 1)), (s1.length() -
1))))
so = (s1);
}
if(s2.length() >= s.length())
{
if(s.substring(1, (s.length()
- 1)).equals(s2.substring((s2.length() - (s.length() - 1)), (s2.length() -
1))))
so = (so + " " +
s2);
}
if(s3.length() >= s.length())
{
if(s3.length() >=
s.length() && s.substring(1, (s.length() - 1)).equals(s3.substring((s3.length()
- (s.length() - 1)), (s3.length() - 1))))
so = (so + " " +
s3);
}
if(s4.length() >= s.length())
{
if(s.substring(1, (s.length()
- 1)).equals(s4.substring((s4.length() - (s.length() - 1)), (s4.length() - 1))))
so = (so + " " +
s4);
}
return so;
}
//this method will find out what words are
appropriate for a search that starts with a * and has a ? in it
public static String search7(String s1,
String s2, String s3, String s4, String s, String so)
{
String qM = "?";
int strPos = s.indexOf(qM);
if(s1.length() >= s.length())
{
if(s.substring(1,
strPos).equals(s1.substring(s1.length() - (s.length()),
(s1.length()
- s.length() + (strPos - 1))))&& s.substring(strPos + 1, s.length())
.equals(s1.substring((s1.length()
- (s1.length() - s.length() + (strPos + 1))), s1.length())))
so = s1;
}
if(s2.length() >= s.length())
{
if(s.substring(1,
strPos).equals(s2.substring(s2.length() - (s.length()),
(s2.length() -
s.length() + (strPos - 1))))&& s.substring(strPos + 1, s.length())
.equals(s2.substring((s2.length()
- (s2.length() - s.length() + (strPos + 1))), s2.length())))
so = (so + " "
+ s2);
}
if(s3.length() >= s.length())
{
if(s.substring(1,
strPos).equals(s3.substring(s3.length() - (s.length()),
(s3.length() -
s.length() + (strPos - 1))))&& s.substring(strPos + 1, s.length())
.equals(s3.substring((s3.length()
- (s3.length() - s.length() + (strPos + 1))), s3.length())))
so = (so + " "
+ s3);
}
if(s4.length() >= s.length())
{
if(s.substring(1,
strPos).equals(s4.substring(s4.length() - (s.length()),
(s4.length() -
s.length() + (strPos - 1))))&& s.substring(strPos + 1, s.length())
.equals(s4.substring((s4.length()
- (s4.length() - s.length() + (strPos + 1))), s4.length())))
so = (so + "
" + s4);
}
return so;
}
//this method will find out what words are
appropriate for a search that ends with a * and has a ? in it
public static String search8(String s1,
String s2, String s3, String s4, String s, String so)
{
String qM = "?";
int strPos = s.indexOf(qM);
if(s.substring(0,
strPos).equals(s1.substring(0, strPos)) && s.substring(strPos + 1,
s.length())
.equals(s1.substring(strPos
+ 1, s1.length() - (s1.length() - s.length()))))
so = s1;
if(s.substring(0,
strPos).equals(s2.substring(0, strPos)) && s.substring(strPos + 1,
s.length())
.equals(s2.substring(strPos
+ 1, s2.length() - (s2.length() - s.length()))))
so = so + s2;
if(s.substring(0,
strPos).equals(s3.substring(0, strPos)) && s.substring(strPos + 1,
s.length())
.equals(s3.substring(strPos
+ 1, s3.length() - (s3.length() - s.length()))))
so = so + s3;
if(s.substring(0, strPos).equals(s4.substring(0,
strPos)) && s.substring(strPos + 1, s.length())
.equals(s4.substring(strPos
+ 1, s4.length() - (s4.length() - s.length()))))
so = so + s4;
return so;
}
//this method will print the results
public static void
printsearchresults(String s)
{
if(s.isEmpty())
System.out.println("No
Match");
else
System.out.println(s);
}
}
/*
TEACH EACH PREACH
TEACH EACH PREACH
TEACH
No Match
TEACHER
*/