ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/StringUtils.java
(Generate patch)

Comparing projects/cms/source/util/uk/org/iscream/cms/util/StringUtils.java (file contents):
Revision 1.1 by tdb, Sun Feb 4 04:56:08 2001 UTC vs.
Revision 1.6 by tdb, Tue Dec 11 17:23:54 2001 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 < package uk.ac.ukc.iscream.util;
2 > package uk.org.iscream.cms.server.util;
3  
4   //---IMPORTS---
5   import java.util.*;
# Line 46 | Line 46 | public class StringUtils {
46          }
47          return new String(textBuffer);
48      }
49 +    
50 +    /**
51 +     * This method takes an array of String's and a
52 +     * String to look for and returns the position
53 +     * in the array that the string occurs.
54 +     *
55 +     * @param search the string to look for
56 +     * @param array the array to look in
57 +     *
58 +     * @return the position in the array
59 +     */
60 +    public static int getStringPos(String search, String[] array) {
61 +        for(int x = 0; x < array.length; x++) {
62 +            if (array[x].equals(search)) {
63 +                return x;
64 +            }
65 +        }
66 +        return -1;
67 +    }
68 +    
69 +    /**
70 +     * Checks if a given string matches a
71 +     * wildcard expression. For example:<br>
72 +     * <br>
73 +     * Given "testingstring"<br>
74 +     * And   "test*ing"<br>
75 +     * <br>
76 +     * This method would return true as there is a match.
77 +     *
78 +     * @param in the string to check
79 +     * @param expression the wildcard expression to match against
80 +     *
81 +     * @return if there is a match
82 +     */
83 +    public static boolean wildcardMatch(String in, String expression) {
84 +        // check actually has wildcards
85 +        if(expression.indexOf("*") != -1) {
86 +            StringTokenizer st = new StringTokenizer(expression, "*");
87 +            String part = "";
88 +            int index = 0;
89 +            // the first token will be everything at the start
90 +            // unless it starts with a wildcard
91 +            // -- if it starts with a wildcard the start
92 +            //    will always match
93 +            if(!expression.startsWith("*")) {
94 +                part = st.nextToken();
95 +                if (in.startsWith(part)) {
96 +                    index = part.length();
97 +                }
98 +                else {
99 +                    // doesn't start with the first part
100 +                    // can't be a match
101 +                    return false;
102 +                }
103 +            }
104 +            while (st.hasMoreTokens()) {
105 +                part = st.nextToken();
106 +                // if the next section can't be matched
107 +                // then this isn't in the input string
108 +                if(in.substring(index).indexOf(part) == -1) {
109 +                    // we don't want to look through any more of it
110 +                    // can't be a match if this part isn't there
111 +                    return false;
112 +                }
113 +                else {
114 +                    // move index pointer to start of the "rest"
115 +                    // where the rest is everything after what we just matched
116 +                    index += in.substring(index).indexOf(part) + part.length();
117 +                }
118 +            }
119 +            // if we reach here and we've found a match
120 +            // we want to check that the last part
121 +            // of the wildcard string is the last part
122 +            // of the input string, if it is, we break out
123 +            // and finish as we've found a match.
124 +            // if the end of the wildcard is a *, then
125 +            // we don't care
126 +            if (!expression.endsWith("*")) {
127 +                if ((in.endsWith(part))) {
128 +                    return true;
129 +                }
130 +                else {
131 +                    // doesn't end with the first part
132 +                    // can't be a match
133 +                    return false;
134 +                }
135 +            // ends with a *, so it matches the
136 +            // end regardless
137 +            }
138 +            else {
139 +                return true;
140 +            }
141 +        }
142 +        else if(in.equals(expression)) {
143 +            // might as well do a check if they're the same
144 +            // bit daft to call this whole method if they are though :)
145 +            return true;
146 +        }
147 +        else {
148 +            // obviously doesn't match if it's not a wildcard
149 +            // expression or isn't equal :)
150 +            return false;
151 +        }
152 +    }
153  
154   //---CONSTRUCTORS---
155  
# Line 55 | Line 159 | public class StringUtils {
159       * Overrides the {@link java.lang.Object#toString() Object.toString()}
160       * method to provide clean logging (every class should have this).
161       *
162 <     * This uses the uk.ac.ukc.iscream.util.FormatName class
162 >     * This uses the uk.org.iscream.cms.server.util.FormatName class
163       * to format the toString()
164       *
165       * @return the name of this class and its CVS revision

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines