Class StringUtils
- java.lang.Object
-
- org.apache.shiro.util.StringUtils
-
public class StringUtils extends Object
Simple utility class for String operations useful across the framework.
Some methods in this class were copied from the Spring Framework so we didn't have to re-invent the wheel, and in these cases, we have retained all license, copyright and author information.
- Since:
- 0.9
-
-
Field Summary
Fields Modifier and Type Field Description static char
DEFAULT_DELIMITER_CHAR
Constant representing the default delimiter character (comma), equal to','
static char
DEFAULT_QUOTE_CHAR
Constant representing the default quote character (double quote), equal to '"'static String
EMPTY_STRING
Constant representing the empty string, equal to ""
-
Constructor Summary
Constructors Constructor Description StringUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static String
clean(String in)
Returns a 'cleaned' representation of the specified argument.static boolean
hasLength(String str)
Check that the given String is neithernull
nor of length 0.static boolean
hasText(String str)
Check whether the given String has actual text.static String
join(Iterator<?> iterator, String separator)
Joins the elements of the providedIterator
into a single String containing the provided elements.static String[]
split(String line)
static String[]
split(String line, char delimiter)
static String[]
split(String line, char delimiter, char quoteChar)
static String[]
split(String line, char delimiter, char beginQuoteChar, char endQuoteChar)
static String[]
split(String aLine, char delimiter, char beginQuoteChar, char endQuoteChar, boolean retainQuotes, boolean trimTokens)
Splits the specified delimited String into tokens, supporting quoted tokens so that quoted strings themselves won't be tokenized.static String[]
splitKeyValue(String aLine)
static Set<String>
splitToSet(String delimited, String separator)
Splits thedelimited
string (delimited by the specifiedseparator
character) and returns the delimited values as aSet
.static boolean
startsWithIgnoreCase(String str, String prefix)
Test if the given String starts with the specified prefix, ignoring upper/lower case.static String
toDelimitedString(Object[] array, String delimiter)
Returns the array's contents as a string, with each element delimited by the specifieddelimiter
argument.static String
toDelimitedString(Collection c, String delimiter)
Returns the collection's contents as a string, with each element delimited by the specifieddelimiter
argument.static String[]
tokenizeToStringArray(String str, String delimiters)
Tokenize the given String into a String array via a StringTokenizer.static String[]
tokenizeToStringArray(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens)
Tokenize the given String into a String array via a StringTokenizer.static String
toString(Object[] array)
Returns the specified array as a comma-delimited (',') string.static String[]
toStringArray(Collection collection)
Copy the given Collection into a String array.static String
uppercaseFirstChar(String in)
Returns the input argument, but ensures the first character is capitalized (if possible).
-
-
-
Field Detail
-
EMPTY_STRING
public static final String EMPTY_STRING
Constant representing the empty string, equal to ""- See Also:
- Constant Field Values
-
DEFAULT_DELIMITER_CHAR
public static final char DEFAULT_DELIMITER_CHAR
Constant representing the default delimiter character (comma), equal to','
- See Also:
- Constant Field Values
-
DEFAULT_QUOTE_CHAR
public static final char DEFAULT_QUOTE_CHAR
Constant representing the default quote character (double quote), equal to '"'- See Also:
- Constant Field Values
-
-
Constructor Detail
-
StringUtils
public StringUtils()
-
-
Method Detail
-
hasText
public static boolean hasText(String str)
Check whether the given String has actual text. More specifically, returnstrue
if the string notnull
, its length is greater than 0, and it contains at least one non-whitespace character.StringUtils.hasText(null) == false
StringUtils.hasText("") == false
StringUtils.hasText(" ") == false
StringUtils.hasText("12345") == true
StringUtils.hasText(" 12345 ") == trueCopied from the Spring Framework while retaining all license, copyright and author information.
- Parameters:
str
- the String to check (may benull
)- Returns:
true
if the String is notnull
, its length is greater than 0, and it does not contain whitespace only- See Also:
Character.isWhitespace(char)
-
hasLength
public static boolean hasLength(String str)
Check that the given String is neithernull
nor of length 0. Note: Will returntrue
for a String that purely consists of whitespace.StringUtils.hasLength(null) == false
Copied from the Spring Framework while retaining all license, copyright and author information.
StringUtils.hasLength("") == false
StringUtils.hasLength(" ") == true
StringUtils.hasLength("Hello") == true- Parameters:
str
- the String to check (may benull
)- Returns:
true
if the String is not null and has length- See Also:
hasText(String)
-
startsWithIgnoreCase
public static boolean startsWithIgnoreCase(String str, String prefix)
Test if the given String starts with the specified prefix, ignoring upper/lower case.Copied from the Spring Framework while retaining all license, copyright and author information.
- Parameters:
str
- the String to checkprefix
- the prefix to look for- Returns:
true
starts with the specified prefix (ignoring case),false
if it does not.- See Also:
String.startsWith(java.lang.String, int)
-
clean
public static String clean(String in)
Returns a 'cleaned' representation of the specified argument. 'Cleaned' is defined as the following:- If the specified
String
isnull
, returnnull
- If not
null
,trim()
it. - If the trimmed string is equal to the empty String (i.e. ""), return
null
- If the trimmed string is not the empty string, return the trimmed version .
null
is returned.- Parameters:
in
- the input String to clean.- Returns:
- a populated-but-trimmed String or
null
otherwise
- If the specified
-
toString
public static String toString(Object[] array)
Returns the specified array as a comma-delimited (',') string.- Parameters:
array
- the array whose contents will be converted to a string.- Returns:
- the array's contents as a comma-delimited (',') string.
- Since:
- 1.0
-
toDelimitedString
public static String toDelimitedString(Object[] array, String delimiter)
Returns the array's contents as a string, with each element delimited by the specifieddelimiter
argument. Useful fortoString()
implementations and log messages.- Parameters:
array
- the array whose contents will be converted to a stringdelimiter
- the delimiter to use between each element- Returns:
- a single string, delimited by the specified
delimiter
. - Since:
- 1.0
-
toDelimitedString
public static String toDelimitedString(Collection c, String delimiter)
Returns the collection's contents as a string, with each element delimited by the specifieddelimiter
argument. Useful fortoString()
implementations and log messages.- Parameters:
c
- the collection whose contents will be converted to a stringdelimiter
- the delimiter to use between each element- Returns:
- a single string, delimited by the specified
delimiter
. - Since:
- 1.2
-
tokenizeToStringArray
public static String[] tokenizeToStringArray(String str, String delimiters)
Tokenize the given String into a String array via a StringTokenizer. Trims tokens and omits empty tokens.The given delimiters string is supposed to consist of any number of delimiter characters. Each of those characters can be used to separate tokens. A delimiter is always a single character; for multi-character delimiters, consider using
delimitedListToStringArray
Copied from the Spring Framework while retaining all license, copyright and author information.
- Parameters:
str
- the String to tokenizedelimiters
- the delimiter characters, assembled as String (each of those characters is individually considered as delimiter).- Returns:
- an array of the tokens
- See Also:
StringTokenizer
,String.trim()
-
tokenizeToStringArray
public static String[] tokenizeToStringArray(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens)
Tokenize the given String into a String array via a StringTokenizer.The given delimiters string is supposed to consist of any number of delimiter characters. Each of those characters can be used to separate tokens. A delimiter is always a single character; for multi-character delimiters, consider using
delimitedListToStringArray
Copied from the Spring Framework while retaining all license, copyright and author information.
- Parameters:
str
- the String to tokenizedelimiters
- the delimiter characters, assembled as String (each of those characters is individually considered as delimiter)trimTokens
- trim the tokens via String'strim
ignoreEmptyTokens
- omit empty tokens from the result array (only applies to tokens that are empty after trimming; StringTokenizer will not consider subsequent delimiters as token in the first place).- Returns:
- an array of the tokens (
null
if the input String wasnull
) - See Also:
StringTokenizer
,String.trim()
-
toStringArray
public static String[] toStringArray(Collection collection)
Copy the given Collection into a String array. The Collection must contain String elements only.Copied from the Spring Framework while retaining all license, copyright and author information.
- Parameters:
collection
- the Collection to copy- Returns:
- the String array (
null
if the passed-in Collection wasnull
)
-
splitKeyValue
public static String[] splitKeyValue(String aLine) throws ParseException
- Throws:
ParseException
-
split
public static String[] split(String line, char delimiter, char beginQuoteChar, char endQuoteChar)
-
split
public static String[] split(String aLine, char delimiter, char beginQuoteChar, char endQuoteChar, boolean retainQuotes, boolean trimTokens)
Splits the specified delimited String into tokens, supporting quoted tokens so that quoted strings themselves won't be tokenized. This method's implementation is very loosely based (with significant modifications) on Glen Smith's open-source CSVReader.java file. That file is Apache 2.0 licensed as well, making Glen's code a great starting point for us to modify to our needs.- Parameters:
aLine
- the String to parsedelimiter
- the delimiter by which the line argument is to be splitbeginQuoteChar
- the character signifying the start of quoted text (so the quoted text will not be split)endQuoteChar
- the character signifying the end of quoted textretainQuotes
- if the quotes themselves should be retained when constructing the corresponding tokentrimTokens
- if leading and trailing whitespace should be trimmed from discovered tokens.- Returns:
- the tokens discovered from parsing the given delimited line.
-
join
public static String join(Iterator<?> iterator, String separator)
Joins the elements of the providedIterator
into a single String containing the provided elements. No delimiter is added before or after the list. Anull
separator is the same as an empty String (""). Copied from Commons Lang, version 3 (r1138702).- Parameters:
iterator
- theIterator
of values to join together, may be nullseparator
- the separator character to use, null treated as ""- Returns:
- the joined String,
null
if null iterator input - Since:
- 1.2
-
splitToSet
public static Set<String> splitToSet(String delimited, String separator)
Splits thedelimited
string (delimited by the specifiedseparator
character) and returns the delimited values as aSet
. If either argument isnull
, this method returnsnull
.- Parameters:
delimited
- the string to splitseparator
- the character that delineates individual tokens to split- Returns:
- the delimited values as a
Set
. - Since:
- 1.2
-
uppercaseFirstChar
public static String uppercaseFirstChar(String in)
Returns the input argument, but ensures the first character is capitalized (if possible).- Parameters:
in
- the string to uppercase the first character.- Returns:
- the input argument, but with the first character capitalized (if possible).
- Since:
- 1.2
-
-