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>


Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007