org.springframework.shell.support.util
Class StringUtils

java.lang.Object
  extended by org.springframework.shell.support.util.StringUtils

public final class StringUtils
extends Object

Miscellaneous String utility methods.

Mainly for internal use within the framework; consider Jakarta's Commons Lang for a more comprehensive suite of String utilities.

This class delivers some simple functionality that should really be provided by the core Java String and StringBuilder classes, such as the ability to replace(java.lang.String, java.lang.String, java.lang.String) all occurrences of a given substring in a target string. It also provides easy-to-use methods to convert between delimited strings, such as CSV strings, and collections and arrays.

Since:
16 April 2001
See Also:
org.apache.commons.lang.StringUtils

Field Summary
static String LINE_SEPARATOR
          The platform-specific line separator.
 
Method Summary
static String[] addStringToArray(String[] arr, String str)
          Append the given String to the given String array, returning a new array consisting of the input array contents plus the given String.
static String applyRelativePath(String path, String relativePath)
          Apply the given relative path to the given path, assuming standard Java folder separation (i.e. "/" separators);
static String arrayToCommaDelimitedString(Object[] arr)
          Convenience method to return a String array as a CSV String.
static String arrayToDelimitedString(Object[] arr, String delim)
          Convenience method to return a String array as a delimited (e.g.
static String arrayToDelimitedString(String delim, Object... arr)
          Convenience method to return a String array as a delimited (e.g.
static String capitalize(String str)
          Capitalize a String, changing the first letter to upper case as per Character.toUpperCase(char).
static String cleanPath(String path)
          Normalize the path by suppressing sequences like "path/.." and inner simple dots.
static String collectionToCommaDelimitedString(Collection<?> coll)
          Convenience method to return a Collection as a CSV String.
static String collectionToDelimitedString(Collection<?> coll, String delim)
          Concatenates the given collection using the given delimiter between each item.
static String collectionToDelimitedString(Collection<?> coll, String delim, String prefix, String suffix)
          Convenience method to return a Collection as a delimited (e.g.
static Set<String> commaDelimitedListToSet(String str)
          Convenience method to convert a CSV string list to a set.
static String[] commaDelimitedListToStringArray(String str)
          Convert a CSV list into an array of Strings.
static String[] concatenateStringArrays(String[] arr1, String[] arr2)
          Concatenate the given String arrays into one, with overlapping array elements included twice.
static boolean contains(String str, String substr)
          Indicates whether the given substring occurs within the given string.
static boolean containsWhitespace(CharSequence str)
          Check whether the given CharSequence contains any whitespace characters.
static boolean containsWhitespace(String str)
          Check whether the given String contains any whitespace characters.
static int countOccurrencesOf(String str, String sub)
          Count the occurrences of the substring in string s.
static String defaultIfEmpty(String str, String... defaultValues)
          Returns either the passed in String, or if it's blank, the first of the given default values that is not blank.
static String delete(String inString, String pattern)
          Delete all occurrences of the given substring.
static String deleteAny(String inString, String charsToDelete)
          Delete any character in a given String.
static String[] delimitedListToStringArray(String str, String delim)
          Take a String which is a delimited list and convert it to a String array.
static String[] delimitedListToStringArray(String str, String delimiter, String charsToDelete)
          Take a String which is a delimited list and convert it to a String array.
static boolean endsWithIgnoreCase(String str, String suffix)
          Test if the given String ends with the specified suffix, ignoring upper/lower case.
static boolean equals(String str1, String str2)
          Indicates whether the two given strings are equal, including case, where null is (only) equal to null.
static String getFilename(String path)
          Extract the filename from the given path, e.g.
static String getFilenameExtension(String path)
          Extract the filename extension from the given path, e.g.
static boolean hasLength(CharSequence str)
          Check that the given CharSequence is neither null nor of length 0.
static boolean hasLength(String str)
          Check that the given String is neither null nor of length 0.
static boolean hasText(CharSequence str)
          Check whether the given CharSequence has actual text.
static boolean hasText(String str)
          Check whether the given String has actual text.
static boolean isBlank(String str)
          Indicates whether the given text is blank.
static String[] mergeStringArrays(String[] arr1, String[] arr2)
          Merge the given String arrays into one, with overlapping array elements only included once.
static String padLeft(String str, int size, char padChar)
          Left pads the presented string with the delim character.
static String padRight(String str, int size, char padChar)
          Right pads the presented string with the delim character.
static Locale parseLocaleString(String localeString)
          Parse the given localeString into a Locale.
static boolean pathEquals(String path1, String path2)
          Compare two paths after normalization of them.
static String prefix(String str, String prefix)
          Prefixes the given string with the given prefix, if it's not already.
static String quote(String str)
          Quote the given String with single quotes.
static Object quoteIfString(Object obj)
          Turn the given Object into a String with single quotes if it is a String; keeping the Object as-is else.
static String[] removeDuplicateStrings(String[] arr)
          Remove duplicate Strings from the given array.
static String removePrefix(String str, String prefix)
          Removes the given prefix from the given string, if it exists
static String removeSuffix(String str, String suffix)
          Removes the given suffix from the given string, if it exists
static String repeat(String str, int times)
          Returns the given string repeated the given number of times
static String replace(String original, String toReplace, String replacement)
          Replaces all occurrences of one string within another.
static String replaceFirst(String original, String toReplace, String replacement)
          Replaces the first occurrence of the given substring in the given string.
static String[] sortStringArray(String[] arr)
          Turn given source String array into sorted array.
static String[] split(String toSplit, String delim)
          Split a String at the first occurrence of the delimiter.
static Properties splitArrayElementsIntoProperties(String[] arr, String delim)
          Take an array Strings and split each element based on the given delimiter.
static Properties splitArrayElementsIntoProperties(String[] arr, String delim, String charsToDelete)
          Take an array Strings and split each element based on the given delimiter.
static boolean startsWithIgnoreCase(String str, String prefix)
          Test if the given String starts with the specified prefix, ignoring upper/lower case.
static String stripFilenameExtension(String path)
          Strip the filename extension from the given path, e.g.
static String substringAfterLast(String original, String separator)
          Returns the substring after the last occurrence of a separator.
static boolean substringMatch(CharSequence str, int index, CharSequence substring)
          Test whether the given string matches the given substring at the given index.
static String suffix(String str, String suffix)
          Appends the given suffix to the given string, if not already present
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 toLanguageTag(Locale locale)
          Determine the RFC 3066 compliant language tag, as used for the HTTP "Accept-Language" header.
static String toLowerCase(String str)
          Converts the given String to lowercase.
static String[] toStringArray(Collection<String> coll)
          Copy the given Collection into a String array.
static String[] toStringArray(Enumeration<String> enumeration)
          Copy the given Enumeration into a String array.
static String toUpperCase(String str)
          Converts the given String to uppercase.
static String trimAllWhitespace(String str)
          Trim all whitespace from the given String: leading, trailing, and inbetween characters.
static String[] trimArrayElements(String[] arr)
          Trim the elements of the given String array, calling String.trim() on each of them.
static String trimLeadingCharacter(String str, char leadingCharacter)
          Trim all occurences of the supplied leading character from the given String.
static String trimLeadingWhitespace(String str)
          Trim leading whitespace from the given String.
static String trimToEmpty(String str)
           Removes leading and trailing whitespace from both ends of this String returning an empty String ("") if the String is empty after the trim or if it is null.
static String trimToNull(String str)
           Removes leading and trailing whitespace from both ends of this String returning null if the String is empty ("") after the trim or if it is null.
static String trimTrailingCharacter(String str, char trailingCharacter)
          Trim all occurences of the supplied trailing character from the given String.
static String trimTrailingWhitespace(String str)
          Trim trailing whitespace from the given String.
static String trimWhitespace(String str)
          Trim leading and trailing whitespace from the given String.
static String uncapitalize(String str)
          Uncapitalize a String, changing the first letter to lower case as per Character.toLowerCase(char).
static String unqualify(String qualifiedName)
          Unqualify a string qualified by a '.' dot character.
static String unqualify(String qualifiedName, char separator)
          Unqualify a string qualified by a separator character.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LINE_SEPARATOR

public static final String LINE_SEPARATOR
The platform-specific line separator.

Since:
1.2.0
Method Detail

hasLength

public static boolean hasLength(CharSequence str)
Check that the given CharSequence is neither null nor of length 0. Note: Will return true for a CharSequence that purely consists of whitespace.

 StringUtils.hasLength(null) = false
 StringUtils.hasLength("") = false
 StringUtils.hasLength(" ") = true
 StringUtils.hasLength("Hello") = true
 

Parameters:
str - the CharSequence to check (may be null)
Returns:
true if the CharSequence is not null and has length
See Also:
hasText(String)

hasLength

public static boolean hasLength(String str)
Check that the given String is neither null nor of length 0. Note: Will return true for a String that purely consists of whitespace.

Parameters:
str - the String to check (may be null)
Returns:
true if the String is not null and has length
See Also:
hasLength(CharSequence)

hasText

public static boolean hasText(CharSequence str)
Check whether the given CharSequence has actual text. More specifically, returns true if the string not null, 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 ") = true
 

Parameters:
str - the CharSequence to check (may be null)
Returns:
true if the CharSequence is not null, its length is greater than 0, and it does not contain whitespace only
See Also:
Character.isWhitespace(char)

hasText

public static boolean hasText(String str)
Check whether the given String has actual text. More specifically, returns true if the string not null, its length is greater than 0, and it contains at least one non-whitespace character.

Parameters:
str - the String to check (may be null)
Returns:
true if the String is not null, its length is greater than 0, and it does not contain whitespace only
See Also:
hasText(CharSequence)

contains

public static boolean contains(String str,
                               String substr)
Indicates whether the given substring occurs within the given string. Inspired by the eponymous method in commons-lang.
                StringUtils.contains(null, *)     = false
                StringUtils.contains(*, null)     = false
                StringUtils.contains("", "")      = true
                StringUtils.contains("abc", "")   = true
                StringUtils.contains("abc", "a")  = true
                StringUtils.contains("abc", "z")  = false

Parameters:
str - the string to look within (can be null)
substr - the string to look for (can be null)
Returns:
see above
Since:
1.2.0

containsWhitespace

public static boolean containsWhitespace(CharSequence str)
Check whether the given CharSequence contains any whitespace characters.

Parameters:
str - the CharSequence to check (may be null)
Returns:
true if the CharSequence is not empty and contains at least 1 whitespace character
See Also:
Character.isWhitespace(char)

containsWhitespace

public static boolean containsWhitespace(String str)
Check whether the given String contains any whitespace characters.

Parameters:
str - the String to check (may be null)
Returns:
true if the String is not empty and contains at least 1 whitespace character
See Also:
containsWhitespace(CharSequence)

trimWhitespace

public static String trimWhitespace(String str)
Trim leading and trailing whitespace from the given String.

Parameters:
str - the String to check
Returns:
the trimmed String
See Also:
Character.isWhitespace(char)

trimAllWhitespace

public static String trimAllWhitespace(String str)
Trim all whitespace from the given String: leading, trailing, and inbetween characters.

Parameters:
str - the String to check
Returns:
the trimmed String
See Also:
Character.isWhitespace(char)

trimLeadingWhitespace

public static String trimLeadingWhitespace(String str)
Trim leading whitespace from the given String.

Parameters:
str - the String to check
Returns:
the trimmed String
See Also:
Character.isWhitespace(char)

trimTrailingWhitespace

public static String trimTrailingWhitespace(String str)
Trim trailing whitespace from the given String.

Parameters:
str - the String to check
Returns:
the trimmed String
See Also:
Character.isWhitespace(char)

trimLeadingCharacter

public static String trimLeadingCharacter(String str,
                                          char leadingCharacter)
Trim all occurences of the supplied leading character from the given String.

Parameters:
str - the String to check
leadingCharacter - the leading character to be trimmed
Returns:
the trimmed String

trimTrailingCharacter

public static String trimTrailingCharacter(String str,
                                           char trailingCharacter)
Trim all occurences of the supplied trailing character from the given String.

Parameters:
str - the String to check
trailingCharacter - the trailing character to be trimmed
Returns:
the trimmed String

startsWithIgnoreCase

public static boolean startsWithIgnoreCase(String str,
                                           String prefix)
Test if the given String starts with the specified prefix, ignoring upper/lower case.

Parameters:
str - the String to check
prefix - the prefix to look for
See Also:
String.startsWith(java.lang.String, int)

endsWithIgnoreCase

public static boolean endsWithIgnoreCase(String str,
                                         String suffix)
Test if the given String ends with the specified suffix, ignoring upper/lower case.

Parameters:
str - the String to check
suffix - the suffix to look for
See Also:
String.endsWith(java.lang.String)

substringMatch

public static boolean substringMatch(CharSequence str,
                                     int index,
                                     CharSequence substring)
Test whether the given string matches the given substring at the given index.

Parameters:
str - the original string (or StringBuilder)
index - the index in the original string to start matching against
substring - the substring to match at the given index

countOccurrencesOf

public static int countOccurrencesOf(String str,
                                     String sub)
Count the occurrences of the substring in string s.

Parameters:
str - string to search in. Return 0 if this is null.
sub - string to search for. Return 0 if this is null.

repeat

public static String repeat(String str,
                            int times)
Returns the given string repeated the given number of times

Parameters:
str - the string to repeat (can be null or empty)
times - the number of times to repeat it
Returns:
null if null is given

replace

public static String replace(String original,
                             String toReplace,
                             String replacement)
Replaces all occurrences of one string within another.

Parameters:
original - the string to modify (can be zero length to do nothing)
toReplace - the string to replace (can be blank to do nothing)
replacement - the string to replace it with (can be null to do nothing)
Returns:
the original string, modified as necessary

delete

public static String delete(String inString,
                            String pattern)
Delete all occurrences of the given substring.

Parameters:
inString - the original String
pattern - the pattern to delete all occurrences of
Returns:
the resulting String

deleteAny

public static String deleteAny(String inString,
                               String charsToDelete)
Delete any character in a given String.

Parameters:
inString - the original String
charsToDelete - a set of characters to delete. E.g. "az\n" will delete 'a's, 'z's and new lines.
Returns:
the resulting String

quote

public static String quote(String str)
Quote the given String with single quotes.

Parameters:
str - the input String (e.g. "myString")
Returns:
the quoted String (e.g. "'myString'"), or null if the input was null

quoteIfString

public static Object quoteIfString(Object obj)
Turn the given Object into a String with single quotes if it is a String; keeping the Object as-is else.

Parameters:
obj - the input Object (e.g. "myString")
Returns:
the quoted String (e.g. "'myString'"), or the input object as-is if not a String

unqualify

public static String unqualify(String qualifiedName)
Unqualify a string qualified by a '.' dot character. For example, "this.name.is.qualified", returns "qualified".

Parameters:
qualifiedName - the qualified name

unqualify

public static String unqualify(String qualifiedName,
                               char separator)
Unqualify a string qualified by a separator character. For example, "this:name:is:qualified" returns "qualified" if using a ':' separator.

Parameters:
qualifiedName - the qualified name
separator - the separator

capitalize

public static String capitalize(String str)
Capitalize a String, changing the first letter to upper case as per Character.toUpperCase(char). No other letters are changed.

Parameters:
str - the String to capitalize, may be null
Returns:
the capitalized String, null if null

uncapitalize

public static String uncapitalize(String str)
Uncapitalize a String, changing the first letter to lower case as per Character.toLowerCase(char). No other letters are changed.

Parameters:
str - the String to uncapitalize, may be null
Returns:
the uncapitalized String, null if null

getFilename

public static String getFilename(String path)
Extract the filename from the given path, e.g. "mypath/myfile.txt" -> "myfile.txt".

Parameters:
path - the file path (may be null)
Returns:
the extracted filename, or null if none

getFilenameExtension

public static String getFilenameExtension(String path)
Extract the filename extension from the given path, e.g. "mypath/myfile.txt" -> "txt".

Parameters:
path - the file path (may be null)
Returns:
the extracted filename extension, or null if none

stripFilenameExtension

public static String stripFilenameExtension(String path)
Strip the filename extension from the given path, e.g. "mypath/myfile.txt" -> "mypath/myfile".

Parameters:
path - the file path (may be null)
Returns:
the path with stripped filename extension, or null if none

applyRelativePath

public static String applyRelativePath(String path,
                                       String relativePath)
Apply the given relative path to the given path, assuming standard Java folder separation (i.e. "/" separators);

Parameters:
path - the path to start from (usually a full file path)
relativePath - the relative path to apply (relative to the full file path above)
Returns:
the full file path that results from applying the relative path

cleanPath

public static String cleanPath(String path)
Normalize the path by suppressing sequences like "path/.." and inner simple dots.

The result is convenient for path comparison. For other uses, notice that Windows separators ("\") are replaced by simple slashes.

Parameters:
path - the original path
Returns:
the normalized path

pathEquals

public static boolean pathEquals(String path1,
                                 String path2)
Compare two paths after normalization of them.

Parameters:
path1 - first path for comparison
path2 - second path for comparison
Returns:
whether the two paths are equivalent after normalization

parseLocaleString

public static Locale parseLocaleString(String localeString)
Parse the given localeString into a Locale.

This is the inverse operation of Locale's toString.

Parameters:
localeString - the locale string, following Locale's toString() format ("en", "en_UK", etc); also accepts spaces as separators, as an alternative to underscores
Returns:
a corresponding Locale instance

toLanguageTag

public static String toLanguageTag(Locale locale)
Determine the RFC 3066 compliant language tag, as used for the HTTP "Accept-Language" header.

Parameters:
locale - the Locale to transform to a language tag
Returns:
the RFC 3066 compliant language tag as String

addStringToArray

public static String[] addStringToArray(String[] arr,
                                        String str)
Append the given String to the given String array, returning a new array consisting of the input array contents plus the given String.

Parameters:
arr - the array to append to (can be null)
str - the String to append
Returns:
the new array (never null)

concatenateStringArrays

public static String[] concatenateStringArrays(String[] arr1,
                                               String[] arr2)
Concatenate the given String arrays into one, with overlapping array elements included twice.

The order of elements in the original arrays is preserved.

Parameters:
arr1 - the first array (can be null)
arr2 - the second array (can be null)
Returns:
the new array (null if both given arrays were null)

mergeStringArrays

public static String[] mergeStringArrays(String[] arr1,
                                         String[] arr2)
Merge the given String arrays into one, with overlapping array elements only included once.

The order of elements in the original arrays is preserved (with the exception of overlapping elements, which are only included on their first occurrence).

Parameters:
arr1 - the first array (can be null)
arr2 - the second array (can be null)
Returns:
the new array (null if both given arrays were null)

sortStringArray

public static String[] sortStringArray(String[] arr)
Turn given source String array into sorted array.

Parameters:
arr - the source array
Returns:
the sorted array (never null)

toStringArray

public static String[] toStringArray(Collection<String> coll)
Copy the given Collection into a String array. The Collection must contain String elements only.

Parameters:
coll - the Collection to copy
Returns:
the String array (null if the passed-in Collection was null)

toStringArray

public static String[] toStringArray(Enumeration<String> enumeration)
Copy the given Enumeration into a String array. The Enumeration must contain String elements only.

Parameters:
enumeration - the Enumeration to copy
Returns:
the String array (null if the passed-in Enumeration was null)

trimArrayElements

public static String[] trimArrayElements(String[] arr)
Trim the elements of the given String array, calling String.trim() on each of them.

Parameters:
arr - the original String array
Returns:
the resulting array (of the same size) with trimmed elements

removeDuplicateStrings

public static String[] removeDuplicateStrings(String[] arr)
Remove duplicate Strings from the given array. Also sorts the array, as it uses a TreeSet.

Parameters:
arr - the String array
Returns:
an array without duplicates, in natural sort order

split

public static String[] split(String toSplit,
                             String delim)
Split a String at the first occurrence of the delimiter. Does not include the delimiter in the result.

Parameters:
toSplit - the string to split
delim - to split the string up with
Returns:
a two element array with index 0 being before the delimiter, and index 1 being after the delimiter (neither element includes the delimiter); or null if the delimiter wasn't found in the given input String

splitArrayElementsIntoProperties

public static Properties splitArrayElementsIntoProperties(String[] arr,
                                                          String delim)
Take an array Strings and split each element based on the given delimiter. A Properties instance is then generated, with the left of the delimiter providing the key, and the right of the delimiter providing the value.

Will trim both the key and value before adding them to the Properties instance.

Parameters:
arr - the array to process
delim - to split each element using (typically the equals symbol)
Returns:
a Properties instance representing the array contents, or null if the array to process was null or empty

splitArrayElementsIntoProperties

public static Properties splitArrayElementsIntoProperties(String[] arr,
                                                          String delim,
                                                          String charsToDelete)
Take an array Strings and split each element based on the given delimiter. A Properties instance is then generated, with the left of the delimiter providing the key, and the right of the delimiter providing the value.

Will trim both the key and value before adding them to the Properties instance.

Parameters:
arr - the array to process
delim - to split each element using (typically the equals symbol)
charsToDelete - one or more characters to remove from each element prior to attempting the split operation (typically the quotation mark symbol), or null if no removal should occur
Returns:
a Properties instance representing the array contents, or null if the array to process was null or empty

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

Parameters:
str - the String to tokenize
delimiters - 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(), delimitedListToStringArray(java.lang.String, java.lang.String)

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

Parameters:
str - the String to tokenize
delimiters - the delimiter characters, assembled as String (each of those characters is individually considered as delimiter)
trimTokens - trim the tokens via String's trim
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 was null)
See Also:
StringTokenizer, String.trim(), delimitedListToStringArray(java.lang.String, java.lang.String)

delimitedListToStringArray

public static String[] delimitedListToStringArray(String str,
                                                  String delim)
Take a String which is a delimited list and convert it to a String array.

A single delimiter can consists of more than one character: It will still be considered as single delimiter string, rather than as bunch of potential delimiter characters - in contrast to tokenizeToStringArray.

Parameters:
str - the input String
delim - the delimiter between elements (this is a single delimiter, rather than a bunch individual delimiter characters)
Returns:
an array of the tokens in the list
See Also:
tokenizeToStringArray(java.lang.String, java.lang.String)

delimitedListToStringArray

public static String[] delimitedListToStringArray(String str,
                                                  String delimiter,
                                                  String charsToDelete)
Take a String which is a delimited list and convert it to a String array.

A single delimiter can consists of more than one character: It will still be considered as single delimiter string, rather than as bunch of potential delimiter characters - in contrast to tokenizeToStringArray.

Parameters:
str - the input String
delimiter - the delimiter between elements (this is a single delimiter, rather than a bunch individual delimiter characters)
charsToDelete - a set of characters to delete. Useful for deleting unwanted line breaks: e.g. "\r\n\f" will delete all new lines and line feeds in a String.
Returns:
an array of the tokens in the list
See Also:
tokenizeToStringArray(java.lang.String, java.lang.String)

commaDelimitedListToStringArray

public static String[] commaDelimitedListToStringArray(String str)
Convert a CSV list into an array of Strings.

Parameters:
str - the input String
Returns:
an array of Strings, or the empty array in case of empty input

commaDelimitedListToSet

public static Set<String> commaDelimitedListToSet(String str)
Convenience method to convert a CSV string list to a set. Note that this will suppress duplicates.

Parameters:
str - the input String
Returns:
a Set of String entries in the list

collectionToDelimitedString

public static String collectionToDelimitedString(Collection<?> coll,
                                                 String delim,
                                                 String prefix,
                                                 String suffix)
Convenience method to return a Collection as a delimited (e.g. CSV) String. E.g. useful for toString() implementations.

Parameters:
coll - the Collection to display
delim - the delimiter to use (probably a ",")
prefix - the String to start each element with
suffix - the String to end each element with
Returns:
the delimited String (never null)

collectionToDelimitedString

public static String collectionToDelimitedString(Collection<?> coll,
                                                 String delim)
Concatenates the given collection using the given delimiter between each item.

Parameters:
coll - the collection to display (can be null or empty)
delim - the delimiter to use (can be null or empty for none)
Returns:
the delimited String (never null)

collectionToCommaDelimitedString

public static String collectionToCommaDelimitedString(Collection<?> coll)
Convenience method to return a Collection as a CSV String. E.g. useful for toString() implementations.

Parameters:
coll - the Collection to display
Returns:
the delimited String

arrayToDelimitedString

public static String arrayToDelimitedString(String delim,
                                            Object... arr)
Convenience method to return a String array as a delimited (e.g. CSV) String. E.g. useful for toString() implementations.

Parameters:
arr - the array to display
delim - the delimiter to use (probably a ",")
Returns:
the delimited String
Since:
1.2.0

arrayToDelimitedString

public static String arrayToDelimitedString(Object[] arr,
                                            String delim)
Convenience method to return a String array as a delimited (e.g. CSV) String. E.g. useful for toString() implementations.

Parameters:
arr - the array to display
delim - the delimiter to use (probably a ",")
Returns:
the delimited String

arrayToCommaDelimitedString

public static String arrayToCommaDelimitedString(Object[] arr)
Convenience method to return a String array as a CSV String. E.g. useful for toString() implementations.

Parameters:
arr - the array to display
Returns:
the delimited String

toUpperCase

public static String toUpperCase(String str)
Converts the given String to uppercase.

Parameters:
str - the input String (may be null)
Returns:
the String in uppercase, otherwise null

toLowerCase

public static String toLowerCase(String str)
Converts the given String to lowercase.

Parameters:
str - the input String (may be null)
Returns:
the String in lowercase, otherwise null

trimToNull

public static String trimToNull(String str)

Removes leading and trailing whitespace from both ends of this String returning null if the String is empty ("") after the trim or if it is null.

 StringUtils.trimToNull(null) = null
 StringUtils.trimToNull("") = null
 StringUtils.trimToNull(" ") = null
 StringUtils.trimToNull("abc") = "abc"
 StringUtils.trimToNull(" abc ") = "abc"
 

Parameters:
str - the String to be trimmed, may be null
Returns:
the trimmed String, null if only chars <= 32, empty or null String input
Since:
1.1

trimToEmpty

public static String trimToEmpty(String str)

Removes leading and trailing whitespace from both ends of this String returning an empty String ("") if the String is empty after the trim or if it is null.

 StringUtils.trimToNull(null) = ""
 StringUtils.trimToNull("") = ""
 StringUtils.trimToNull(" ") = ""
 StringUtils.trimToNull("abc") = "abc"
 StringUtils.trimToNull(" abc ") = "abc"
 

Parameters:
str - the String to be trimmed, may be null
Returns:
the trimmed String, an empty String("") if only chars <= 32, empty or null String input
Since:
1.1

defaultIfEmpty

public static String defaultIfEmpty(String str,
                                    String... defaultValues)
Returns either the passed in String, or if it's blank, the first of the given default values that is not blank. If all the given Strings are blank, returns the last of them.
  • StringUtils.defaultIfEmpty(null, "NULL") = "NULL"
  • StringUtils.defaultIfEmpty("", "NULL") = "NULL"
  • StringUtils.defaultIfEmpty("bat", "NULL") = "bat"
  • StringUtils.defaultIfEmpty(null, "", "bat") = "bat"
  • StringUtils.defaultIfEmpty(null, null, "") = ""

Parameters:
str - the String to check, may be null
defaultStr - the default String to return if the input is empty ("") or null, may be null; note that if this is an expression, it will be evaluated before this method is called regardless of whether the first string is empty, so if this evaluation is expensive and performance is critical, check the first string for emptiness yourself rather than using this method
Returns:
the passed in String, or the default

padRight

public static String padRight(String str,
                              int size,
                              char padChar)
Right pads the presented string with the delim character.

Parameters:
str - the string to pad
size - the size to pad to
padChar - the padding character
Returns:
the right padded string

padLeft

public static String padLeft(String str,
                             int size,
                             char padChar)
Left pads the presented string with the delim character.

Parameters:
str - the string to pad
size - the size to pad to
padChar - the padding character
Returns:
the left padded string

prefix

public static String prefix(String str,
                            String prefix)
Prefixes the given string with the given prefix, if it's not already.

Parameters:
str - the string to prefix (can be blank)
prefix - the prefix to apply (can be blank to do nothing)
Returns:
null if a null string was given, otherwise the prefixed string
Since:
1.2.0

removePrefix

public static String removePrefix(String str,
                                  String prefix)
Removes the given prefix from the given string, if it exists

Parameters:
str - the string to modify (can be blank to do nothing)
prefix - the prefix to remove (can be blank to do nothing)
Returns:
null if a null string was given
Since:
1.2.0

removeSuffix

public static String removeSuffix(String str,
                                  String suffix)
Removes the given suffix from the given string, if it exists

Parameters:
str - the string to modify (can be blank to do nothing)
suffix - the suffix to remove (can be blank to do nothing)
Returns:
null if a null string was given
Since:
1.2.0

suffix

public static String suffix(String str,
                            String suffix)
Appends the given suffix to the given string, if not already present

Parameters:
str - the string to modify (can be blank to do nothing)
suffix - the suffix to append (can be blank to do nothing)
Returns:
null if a null string was given
Since:
1.2.0

equals

public static boolean equals(String str1,
                             String str2)
Indicates whether the two given strings are equal, including case, where null is (only) equal to null.

Parameters:
str1 - the first string to compare (can be null)
str2 - the second string to compare (can be null)
Returns:
see above
Since:
1.2.0

isBlank

public static boolean isBlank(String str)
Indicates whether the given text is blank. More fluent than calling StringUtils.isBlank(blah).

Parameters:
str - the text to check (can be blank)
Returns:
the opposite of hasText(String)
Since:
1.2.0

replaceFirst

public static String replaceFirst(String original,
                                  String toReplace,
                                  String replacement)
Replaces the first occurrence of the given substring in the given string.

Use in preference to String.replaceFirst(String, String) when toReplace is not a regular expression (e.g. some part of a file path, which on Windows will contain backslashes, which have special meaning to regexs).

Parameters:
original - the string to modify (can be zero length to do nothing)
toReplace - the string to replace (can be blank to do nothing)
replacement - the string to replace it with (can be null to do nothing)
Returns:
the original string, modified as necessary
Since:
1.2.0

substringAfterLast

public static String substringAfterLast(String original,
                                        String separator)
Returns the substring after the last occurrence of a separator. The separator is not returned.

A null string input will return null. An empty ("") string input will return the empty string. An empty or null separator will return the empty string if the input string is not null.

If nothing is found, the empty string is returned.

             StringUtils.substringAfterLast(null, *)      = null
             StringUtils.substringAfterLast("", *)        = ""
             StringUtils.substringAfterLast(*, "")        = ""
             StringUtils.substringAfterLast(*, null)      = ""
             StringUtils.substringAfterLast("abc", "a")   = "bc"
             StringUtils.substringAfterLast("abcba", "b") = "a"
             StringUtils.substringAfterLast("abc", "c")   = ""
             StringUtils.substringAfterLast("a", "a")     = ""
             StringUtils.substringAfterLast("a", "z")     = ""

Parameters:
original - the String to get a substring from, may be null
separator - the String to search for, may be null
Returns:
the substring after the last occurrence of the separator, null if null String input
Since:
1.2.0