Dies ist eine alte Version des Dokuments!
Wildcardsuche/Suche mit Platzhaltern
package com.sowas.snippets; /** * Wildcardsuche. Unterstützt '*' und '?'. */ public class Wildcard{ private final String wildcardString; /** * Der Konstruktor für die WildcardSuche. * * @param wildcardString Der WildcardString */ public Wildcard(String wildcardString){ this.wildcardString = wildcardString; } /** * Die Methode, welche den Vergleich durchführt. * * @param str Der String, welcher darauf überprüft werden soll, ob er dem WildcardString entspricht. * @return true Wenn der String dem <code>wildcardString
entspricht.
- /
public boolean match(String str, boolean fCasesensitive){
if (str == null || wildcardString == null){
return false;
}
return recursiveMatch(wildcardString, str, fCasesensitive);
}
/**
* Hier wird der eigentliche Vergleich durchgeführt
*
* @param strWildcard Der Wildcardstring, z.B.: "Test*"
* @param str Der zu überprüfende String, z.B. "Testlauf"
* @return true, wenn eine Übereinstimmung vorhanden ist, sonst false
*/
private boolean recursiveMatch(String strWildcard, String str, boolean fCasesensitive){
while (true){
if (strWildcard.length() == 0)
return str.length() == 0;
char ch = strWildcard.charAt(0);
switch (ch){
case '*':
strWildcard = strWildcard.substring(1);
while (true){
if (recursiveMatch(strWildcard, str, fCasesensitive))
return true;
if (str.length() == 0)
return false;
str = str.substring(1);
}
case '?':
if (str.length() == 0)
return false;
break;
default:
if (str.length() == 0)
return false;
if (fCasesensitive){
if (ch != str.charAt(0))
return false;
}else
if (Character.toLowerCase(ch) != Character.toLowerCase(str.charAt(0)))
return false;
break;
}
strWildcard = strWildcard.substring(1);
str = str.substring(1);
}
}
/**
* Eine kleine Demo der Anwendung.
*
* @param args
*/
public static void main(String[] args){
Wildcard wildcard1 = new Wildcard("Test*");
System.out.println(wildcard1.match("Testlauf", true)); // true
System.out.println(wildcard1.match("Fehler", true)); // false
Wildcard wildcard2 = new Wildcard("T?st");
System.out.println(wildcard2.match("Test", true)); // true
System.out.println(wildcard2.match("test", true)); // false
System.out.println(wildcard2.match("test", false)); // true
}
} </code>