A special thanks goes to @aerouk for almost all of the changes found here. By: Wesley Wolfe <weswolf@aol.com>
58 lines
2.3 KiB
Java
58 lines
2.3 KiB
Java
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);
|
|
}
|
|
}
|