summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit/util/StringUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/bukkit/util/StringUtil.java')
-rw-r--r--src/main/java/org/bukkit/util/StringUtil.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/util/StringUtil.java b/src/main/java/org/bukkit/util/StringUtil.java
new file mode 100644
index 00000000..12bc58d4
--- /dev/null
+++ b/src/main/java/org/bukkit/util/StringUtil.java
@@ -0,0 +1,49 @@
+package org.bukkit.util;
+
+import java.util.Collection;
+import org.apache.commons.lang.Validate;
+
+public class StringUtil {
+
+ /**
+ * Copies all elements from the iterable collection of originals to the collection provided.
+ *
+ * @param token String to search for
+ * @param originals An iterable collection of strings to filter.
+ * @param collection The collection to add matches to
+ * @return the collection provided that would have the elements copied into
+ * @throws UnsupportedOperationException if the collection is immutable and originals contains a string which starts with the specified search string.
+ * @throws IllegalArgumentException if any parameter is is null
+ * @throws IllegalArgumentException if originals contains a null element. <b>Note: the collection may be modified before this is thrown</b>
+ */
+ public static <T extends Collection<String>> T copyPartialMatches(final String token, final Iterable<String> originals, final T collection) throws UnsupportedOperationException, IllegalArgumentException {
+ Validate.notNull(token, "Search token cannot be null");
+ Validate.notNull(collection, "Collection cannot be null");
+ Validate.notNull(originals, "Originals cannot be null");
+
+ for (String string : originals) {
+ if (startsWithIgnoreCase(string, token)) {
+ collection.add(string);
+ }
+ }
+
+ return collection;
+ }
+
+ /**
+ * This method uses a substring to check case-insensitive equality. This means the internal array does not need to be copied like a toLowerCase() call would.
+ *
+ * @param string String to check
+ * @param prefix Prefix of string to compare
+ * @return true if provided string starts with, ignoring case, the prefix provided
+ * @throws NullPointerException if prefix is null
+ * @throws IllegalArgumentException if string is null
+ */
+ public static boolean startsWithIgnoreCase(final String string, final String prefix) throws IllegalArgumentException, NullPointerException {
+ Validate.notNull(string, "Cannot check a null string for a match");
+ if (string.length() < prefix.length()) {
+ return false;
+ }
+ return string.substring(0, prefix.length()).equalsIgnoreCase(prefix);
+ }
+}