X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=svjatoslav_commons.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fstring%2FWildCardMatcher.java;h=0da17384c8b36d882c3a59a3f92f9ff192848a1a;hp=3090184717ae11910145135b5bcf40d814b54fd4;hb=9bf004ce4e9b5edff36c65fcc8cc0f303390d7fc;hpb=77e2799e9c1d172132cf0d47b78eec2f0925bbe2 diff --git a/src/main/java/eu/svjatoslav/commons/string/WildCardMatcher.java b/src/main/java/eu/svjatoslav/commons/string/WildCardMatcher.java index 3090184..0da1738 100755 --- a/src/main/java/eu/svjatoslav/commons/string/WildCardMatcher.java +++ b/src/main/java/eu/svjatoslav/commons/string/WildCardMatcher.java @@ -1,99 +1,103 @@ /* * Svjatoslav Commons - shared library of common functionality. - * Copyright ©2012-2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * + * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. + * modify it under the terms of version 3 of the GNU Lesser General Public License + * or later as published by the Free Software Foundation. */ package eu.svjatoslav.commons.string; public class WildCardMatcher { - /** - * Allow only for * in wildcards - */ - private static boolean checkWildCardEnd(final String wildcardExpression, - int wildCardPosition) { - for (; wildCardPosition < wildcardExpression.length(); wildCardPosition++) { - final char wildCardChar = wildcardExpression - .charAt(wildCardPosition); - if (wildCardChar != '*') - return false; - } - - return true; - } - - /** - *
-	 * Test input string against wildcard expression.
-	 * * -- corresponds to any amount of characters.
-	 * ? -- corresponds to any single character.
-	 * 
- */ - - public static boolean match(final String inputString, - final String wildcardExpression) { - - if (inputString == null) - return false; - - if (wildcardExpression == null) - return false; - - int i; - - for (i = 0; i < inputString.length(); i++) { - if (i >= wildcardExpression.length()) - return false; - final char wildCardChar = wildcardExpression.charAt(i); - if (wildCardChar == '*') - return matchPiece(inputString, i, wildcardExpression, i + 1); - if (wildCardChar != '?') - if (inputString.charAt(i) != wildCardChar) - return false; - } - - return checkWildCardEnd(wildcardExpression, i); - } - - private static boolean matchPiece(final String inputString, - final int inputStringIndex, final String wildcardExpression, - final int wildCardExpressionIndex) { - - int wildCardPosition = wildCardExpressionIndex; - - for (int i = inputStringIndex; i < inputString.length(); i++) { - - wildCardPosition = wildCardExpressionIndex; - - subMatchAttempt: { - - for (int j = i; j < inputString.length(); j++) { - if (wildCardPosition >= wildcardExpression.length()) - break subMatchAttempt; - final char wildCardChar = wildcardExpression - .charAt(wildCardPosition); - - if (wildCardChar == '*') - return matchPiece(inputString, j, wildcardExpression, - wildCardPosition + 1); - - if (wildCardChar != '?') - if (inputString.charAt(j) != wildCardChar) - break subMatchAttempt; - - wildCardPosition++; - } - - return checkWildCardEnd(wildcardExpression, wildCardPosition); - } - - } - - return checkWildCardEnd(wildcardExpression, wildCardPosition); - } + /** + * Allow only for * in wildcards + */ + private static boolean checkWildCardEnd(final String wildcardExpression, + int wildCardPosition) { + for (; wildCardPosition < wildcardExpression.length(); wildCardPosition++) { + final char wildCardChar = wildcardExpression + .charAt(wildCardPosition); + if (wildCardChar != '*') + return false; + } + + return true; + } + + /** + *
+     * Test input string against wildcard expression.
+     * * -- corresponds to any amount of characters.
+     * ? -- corresponds to any single character.
+     * 
+ * + * @param inputString input string + * @param wildcardExpression wildcard expression + * @return true if input string matches input pattern + */ + public static boolean match(final String inputString, + final String wildcardExpression) { + + if (inputString == null) + return false; + + if (wildcardExpression == null) + return false; + + int i; + + for (i = 0; i < inputString.length(); i++) { + if (i >= wildcardExpression.length()) + return false; + final char wildCardChar = wildcardExpression.charAt(i); + if (wildCardChar == '*') + return matchPiece(inputString, i, wildcardExpression, i + 1); + if (wildCardChar != '?') + if (inputString.charAt(i) != wildCardChar) + return false; + } + + return checkWildCardEnd(wildcardExpression, i); + } + + private static boolean matchPiece(final String inputString, + final int inputStringIndex, final String wildcardExpression, + final int wildCardExpressionIndex) { + + int wildCardPosition = wildCardExpressionIndex; + + for (int i = inputStringIndex; i < inputString.length(); i++) { + + wildCardPosition = wildCardExpressionIndex; + + subMatchAttempt: + { + + for (int j = i; j < inputString.length(); j++) { + if (wildCardPosition >= wildcardExpression.length()) + break subMatchAttempt; + final char wildCardChar = wildcardExpression + .charAt(wildCardPosition); + + if (wildCardChar == '*') + return matchPiece(inputString, j, wildcardExpression, + wildCardPosition + 1); + + if (wildCardChar != '?') + if (inputString.charAt(j) != wildCardChar) + break subMatchAttempt; + + wildCardPosition++; + } + + return checkWildCardEnd(wildcardExpression, wildCardPosition); + } + + } + + return checkWildCardEnd(wildcardExpression, wildCardPosition); + } }