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>