public abstract class StringUtils
extends java.lang.Object
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.
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CURRENT_PATH |
private static char |
EXTENSION_SEPARATOR |
private static java.lang.String |
FOLDER_SEPARATOR |
private static java.lang.String |
TOP_PATH |
private static java.lang.String |
WINDOWS_FOLDER_SEPARATOR |
Constructor and Description |
---|
StringUtils() |
Modifier and Type | Method and Description |
---|---|
static java.lang.String[] |
addStringToArray(java.lang.String[] array,
java.lang.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 java.lang.String |
applyRelativePath(java.lang.String path,
java.lang.String relativePath)
Apply the given relative path to the given path,
assuming standard Java folder separation (i.e.
|
static java.lang.String |
arrayToCommaDelimitedString(java.lang.Object[] arr)
Convenience method to return a String array as a CSV String.
|
static java.lang.String |
arrayToDelimitedString(java.lang.Object[] arr,
java.lang.String delim)
Convenience method to return a String array as a delimited (e.g.
|
static java.lang.String |
capitalize(java.lang.String str)
Capitalize a
String , changing the first letter to
upper case as per Character.toUpperCase(char) . |
private static java.lang.String |
changeFirstCharacterCase(java.lang.String str,
boolean capitalize) |
static java.lang.String |
cleanPath(java.lang.String path)
Normalize the path by suppressing sequences like "path/.." and
inner simple dots.
|
static java.lang.String |
collectionToCommaDelimitedString(java.util.Collection<?> coll)
Convenience method to return a Collection as a CSV String.
|
static java.lang.String |
collectionToDelimitedString(java.util.Collection<?> coll,
java.lang.String delim)
Convenience method to return a Collection as a delimited (e.g.
|
static java.lang.String |
collectionToDelimitedString(java.util.Collection<?> coll,
java.lang.String delim,
java.lang.String prefix,
java.lang.String suffix)
Convenience method to return a Collection as a delimited (e.g.
|
static java.util.Set<java.lang.String> |
commaDelimitedListToSet(java.lang.String str)
Convenience method to convert a CSV string list to a set.
|
static java.lang.String[] |
commaDelimitedListToStringArray(java.lang.String str)
Convert a CSV list into an array of Strings.
|
static java.lang.String[] |
concatenateStringArrays(java.lang.String[] array1,
java.lang.String[] array2)
Concatenate the given String arrays into one,
with overlapping array elements included twice.
|
static boolean |
containsWhitespace(java.lang.CharSequence str)
Check whether the given CharSequence contains any whitespace characters.
|
static boolean |
containsWhitespace(java.lang.String str)
Check whether the given String contains any whitespace characters.
|
static int |
countOccurrencesOf(java.lang.String str,
java.lang.String sub)
Count the occurrences of the substring in string s.
|
static java.lang.String |
delete(java.lang.String inString,
java.lang.String pattern)
Delete all occurrences of the given substring.
|
static java.lang.String |
deleteAny(java.lang.String inString,
java.lang.String charsToDelete)
Delete any character in a given String.
|
static java.lang.String[] |
delimitedListToStringArray(java.lang.String str,
java.lang.String delimiter)
Take a String which is a delimited list and convert it to a String array.
|
static java.lang.String[] |
delimitedListToStringArray(java.lang.String str,
java.lang.String delimiter,
java.lang.String charsToDelete)
Take a String which is a delimited list and convert it to a String array.
|
static boolean |
endsWithIgnoreCase(java.lang.String str,
java.lang.String suffix)
Test if the given String ends with the specified suffix,
ignoring upper/lower case.
|
static java.lang.String |
getFilename(java.lang.String path)
Extract the filename from the given path,
e.g.
|
static java.lang.String |
getFilenameExtension(java.lang.String path)
Extract the filename extension from the given path,
e.g.
|
static boolean |
hasLength(java.lang.CharSequence str)
Check that the given CharSequence is neither
null nor of length 0. |
static boolean |
hasLength(java.lang.String str)
Check that the given String is neither
null nor of length 0. |
static boolean |
hasText(java.lang.CharSequence str)
Check whether the given CharSequence has actual text.
|
static boolean |
hasText(java.lang.String str)
Check whether the given String has actual text.
|
static boolean |
isEmpty(java.lang.Object str)
Check whether the given String is empty.
|
static java.lang.String[] |
mergeStringArrays(java.lang.String[] array1,
java.lang.String[] array2)
Merge the given String arrays into one, with overlapping
array elements only included once.
|
static java.util.Locale |
parseLocaleString(java.lang.String localeString)
Parse the given
localeString value into a Locale . |
static java.util.TimeZone |
parseTimeZoneString(java.lang.String timeZoneString)
Parse the given
timeZoneString value into a TimeZone . |
static boolean |
pathEquals(java.lang.String path1,
java.lang.String path2)
Compare two paths after normalization of them.
|
static java.lang.String |
quote(java.lang.String str)
Quote the given String with single quotes.
|
static java.lang.Object |
quoteIfString(java.lang.Object obj)
Turn the given Object into a String with single quotes
if it is a String; keeping the Object as-is else.
|
static java.lang.String[] |
removeDuplicateStrings(java.lang.String[] array)
Remove duplicate Strings from the given array.
|
static java.lang.String |
replace(java.lang.String inString,
java.lang.String oldPattern,
java.lang.String newPattern)
Replace all occurrences of a substring within a string with
another string.
|
static java.lang.String[] |
sortStringArray(java.lang.String[] array)
Turn given source String array into sorted array.
|
static java.lang.String[] |
split(java.lang.String toSplit,
java.lang.String delimiter)
Split a String at the first occurrence of the delimiter.
|
static java.util.Properties |
splitArrayElementsIntoProperties(java.lang.String[] array,
java.lang.String delimiter)
Take an array Strings and split each element based on the given delimiter.
|
static java.util.Properties |
splitArrayElementsIntoProperties(java.lang.String[] array,
java.lang.String delimiter,
java.lang.String charsToDelete)
Take an array Strings and split each element based on the given delimiter.
|
static boolean |
startsWithIgnoreCase(java.lang.String str,
java.lang.String prefix)
Test if the given String starts with the specified prefix,
ignoring upper/lower case.
|
static java.lang.String |
stripFilenameExtension(java.lang.String path)
Strip the filename extension from the given path,
e.g.
|
static boolean |
substringMatch(java.lang.CharSequence str,
int index,
java.lang.CharSequence substring)
Test whether the given string matches the given substring
at the given index.
|
static java.lang.String[] |
tokenizeToStringArray(java.lang.String str,
java.lang.String delimiters)
Tokenize the given String into a String array via a StringTokenizer.
|
static java.lang.String[] |
tokenizeToStringArray(java.lang.String str,
java.lang.String delimiters,
boolean trimTokens,
boolean ignoreEmptyTokens)
Tokenize the given String into a String array via a StringTokenizer.
|
static java.lang.String |
toLanguageTag(java.util.Locale locale)
Determine the RFC 3066 compliant language tag,
as used for the HTTP "Accept-Language" header.
|
static java.lang.String[] |
toStringArray(java.util.Collection<java.lang.String> collection)
Copy the given Collection into a String array.
|
static java.lang.String[] |
toStringArray(java.util.Enumeration<java.lang.String> enumeration)
Copy the given Enumeration into a String array.
|
static java.lang.String |
trimAllWhitespace(java.lang.String str)
Trim all whitespace from the given String:
leading, trailing, and in between characters.
|
static java.lang.String[] |
trimArrayElements(java.lang.String[] array)
Trim the elements of the given String array,
calling
String.trim() on each of them. |
static java.lang.String |
trimLeadingCharacter(java.lang.String str,
char leadingCharacter)
Trim all occurrences of the supplied leading character from the given String.
|
static java.lang.String |
trimLeadingWhitespace(java.lang.String str)
Trim leading whitespace from the given String.
|
static java.lang.String |
trimTrailingCharacter(java.lang.String str,
char trailingCharacter)
Trim all occurrences of the supplied trailing character from the given String.
|
static java.lang.String |
trimTrailingWhitespace(java.lang.String str)
Trim trailing whitespace from the given String.
|
static java.lang.String |
trimWhitespace(java.lang.String str)
Trim leading and trailing whitespace from the given String.
|
static java.lang.String |
uncapitalize(java.lang.String str)
Uncapitalize a
String , changing the first letter to
lower case as per Character.toLowerCase(char) . |
static java.lang.String |
unqualify(java.lang.String qualifiedName)
Unqualify a string qualified by a '.' dot character.
|
static java.lang.String |
unqualify(java.lang.String qualifiedName,
char separator)
Unqualify a string qualified by a separator character.
|
private static void |
validateLocalePart(java.lang.String localePart) |
private static final java.lang.String FOLDER_SEPARATOR
private static final java.lang.String WINDOWS_FOLDER_SEPARATOR
private static final java.lang.String TOP_PATH
private static final java.lang.String CURRENT_PATH
private static final char EXTENSION_SEPARATOR
public static boolean isEmpty(java.lang.Object str)
This method accepts any Object as an argument, comparing it to
null
and the empty String. As a consequence, this method
will never return true
for a non-null non-String object.
The Object signature is useful for general attribute handling code that commonly deals with Strings but generally has to iterate over Objects since attributes may e.g. be primitive value objects as well.
str
- the candidate Stringpublic static boolean hasLength(java.lang.CharSequence str)
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
str
- the CharSequence to check (may be null
)true
if the CharSequence is not null and has lengthhasText(String)
public static boolean hasLength(java.lang.String str)
null
nor of length 0.
Note: Will return true
for a String that purely consists of whitespace.str
- the String to check (may be null
)true
if the String is not null and has lengthhasLength(CharSequence)
public static boolean hasText(java.lang.CharSequence str)
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
str
- the CharSequence to check (may be null
)true
if the CharSequence is not null
,
its length is greater than 0, and it does not contain whitespace onlyCharacter.isWhitespace(char)
public static boolean hasText(java.lang.String str)
true
if the string not null
,
its length is greater than 0, and it contains at least one non-whitespace character.str
- the String to check (may be null
)true
if the String is not null
, its length is
greater than 0, and it does not contain whitespace onlyhasText(CharSequence)
public static boolean containsWhitespace(java.lang.CharSequence str)
str
- the CharSequence to check (may be null
)true
if the CharSequence is not empty and
contains at least 1 whitespace characterCharacter.isWhitespace(char)
public static boolean containsWhitespace(java.lang.String str)
str
- the String to check (may be null
)true
if the String is not empty and
contains at least 1 whitespace charactercontainsWhitespace(CharSequence)
public static java.lang.String trimWhitespace(java.lang.String str)
str
- the String to checkCharacter.isWhitespace(char)
public static java.lang.String trimAllWhitespace(java.lang.String str)
str
- the String to checkCharacter.isWhitespace(char)
public static java.lang.String trimLeadingWhitespace(java.lang.String str)
str
- the String to checkCharacter.isWhitespace(char)
public static java.lang.String trimTrailingWhitespace(java.lang.String str)
str
- the String to checkCharacter.isWhitespace(char)
public static java.lang.String trimLeadingCharacter(java.lang.String str, char leadingCharacter)
str
- the String to checkleadingCharacter
- the leading character to be trimmedpublic static java.lang.String trimTrailingCharacter(java.lang.String str, char trailingCharacter)
str
- the String to checktrailingCharacter
- the trailing character to be trimmedpublic static boolean startsWithIgnoreCase(java.lang.String str, java.lang.String prefix)
str
- the String to checkprefix
- the prefix to look forString.startsWith(java.lang.String, int)
public static boolean endsWithIgnoreCase(java.lang.String str, java.lang.String suffix)
str
- the String to checksuffix
- the suffix to look forString.endsWith(java.lang.String)
public static boolean substringMatch(java.lang.CharSequence str, int index, java.lang.CharSequence substring)
str
- the original string (or StringBuilder)index
- the index in the original string to start matching againstsubstring
- the substring to match at the given indexpublic static int countOccurrencesOf(java.lang.String str, java.lang.String sub)
str
- string to search in. Return 0 if this is null.sub
- string to search for. Return 0 if this is null.public static java.lang.String replace(java.lang.String inString, java.lang.String oldPattern, java.lang.String newPattern)
inString
- String to examineoldPattern
- String to replacenewPattern
- String to insertpublic static java.lang.String delete(java.lang.String inString, java.lang.String pattern)
inString
- the original Stringpattern
- the pattern to delete all occurrences ofpublic static java.lang.String deleteAny(java.lang.String inString, java.lang.String charsToDelete)
inString
- the original StringcharsToDelete
- a set of characters to delete.
E.g. "az\n" will delete 'a's, 'z's and new lines.public static java.lang.String quote(java.lang.String str)
str
- the input String (e.g. "myString")null
if the input was null
public static java.lang.Object quoteIfString(java.lang.Object obj)
obj
- the input Object (e.g. "myString")public static java.lang.String unqualify(java.lang.String qualifiedName)
qualifiedName
- the qualified namepublic static java.lang.String unqualify(java.lang.String qualifiedName, char separator)
qualifiedName
- the qualified nameseparator
- the separatorpublic static java.lang.String capitalize(java.lang.String str)
String
, changing the first letter to
upper case as per Character.toUpperCase(char)
.
No other letters are changed.str
- the String to capitalize, may be null
null
if nullpublic static java.lang.String uncapitalize(java.lang.String str)
String
, changing the first letter to
lower case as per Character.toLowerCase(char)
.
No other letters are changed.str
- the String to uncapitalize, may be null
null
if nullprivate static java.lang.String changeFirstCharacterCase(java.lang.String str, boolean capitalize)
public static java.lang.String getFilename(java.lang.String path)
path
- the file path (may be null
)null
if nonepublic static java.lang.String getFilenameExtension(java.lang.String path)
path
- the file path (may be null
)null
if nonepublic static java.lang.String stripFilenameExtension(java.lang.String path)
path
- the file path (may be null
)null
if nonepublic static java.lang.String applyRelativePath(java.lang.String path, java.lang.String relativePath)
path
- the path to start from (usually a full file path)relativePath
- the relative path to apply
(relative to the full file path above)public static java.lang.String cleanPath(java.lang.String path)
The result is convenient for path comparison. For other uses, notice that Windows separators ("\") are replaced by simple slashes.
path
- the original pathpublic static boolean pathEquals(java.lang.String path1, java.lang.String path2)
path1
- first path for comparisonpath2
- second path for comparisonpublic static java.util.Locale parseLocaleString(java.lang.String localeString)
localeString
value into a Locale
.
This is the inverse operation of Locale's toString
.
localeString
- the locale String, following Locale's
toString()
format ("en", "en_UK", etc);
also accepts spaces as separators, as an alternative to underscoresLocale
instancejava.lang.IllegalArgumentException
- in case of an invalid locale specificationprivate static void validateLocalePart(java.lang.String localePart)
public static java.lang.String toLanguageTag(java.util.Locale locale)
locale
- the Locale to transform to a language tagpublic static java.util.TimeZone parseTimeZoneString(java.lang.String timeZoneString)
timeZoneString
value into a TimeZone
.timeZoneString
- the time zone String, following TimeZone.getTimeZone(String)
but throwing IllegalArgumentException
in case of an invalid time zone specificationTimeZone
instancejava.lang.IllegalArgumentException
- in case of an invalid time zone specificationpublic static java.lang.String[] addStringToArray(java.lang.String[] array, java.lang.String str)
array
- the array to append to (can be null
)str
- the String to appendnull
)public static java.lang.String[] concatenateStringArrays(java.lang.String[] array1, java.lang.String[] array2)
The order of elements in the original arrays is preserved.
array1
- the first array (can be null
)array2
- the second array (can be null
)null
if both given arrays were null
)public static java.lang.String[] mergeStringArrays(java.lang.String[] array1, java.lang.String[] array2)
The order of elements in the original arrays is preserved (with the exception of overlapping elements, which are only included on their first occurrence).
array1
- the first array (can be null
)array2
- the second array (can be null
)null
if both given arrays were null
)public static java.lang.String[] sortStringArray(java.lang.String[] array)
array
- the source arraynull
)public static java.lang.String[] toStringArray(java.util.Collection<java.lang.String> collection)
collection
- the Collection to copynull
if the passed-in
Collection was null
)public static java.lang.String[] toStringArray(java.util.Enumeration<java.lang.String> enumeration)
enumeration
- the Enumeration to copynull
if the passed-in
Enumeration was null
)public static java.lang.String[] trimArrayElements(java.lang.String[] array)
String.trim()
on each of them.array
- the original String arraypublic static java.lang.String[] removeDuplicateStrings(java.lang.String[] array)
array
- the String arraypublic static java.lang.String[] split(java.lang.String toSplit, java.lang.String delimiter)
toSplit
- the string to splitdelimiter
- to split the string up withnull
if the delimiter wasn't found in the given input Stringpublic static java.util.Properties splitArrayElementsIntoProperties(java.lang.String[] array, java.lang.String delimiter)
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.
array
- the array to processdelimiter
- to split each element using (typically the equals symbol)Properties
instance representing the array contents,
or null
if the array to process was null or emptypublic static java.util.Properties splitArrayElementsIntoProperties(java.lang.String[] array, java.lang.String delimiter, java.lang.String charsToDelete)
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.
array
- the array to processdelimiter
- 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 occurProperties
instance representing the array contents,
or null
if the array to process was null
or emptypublic static java.lang.String[] tokenizeToStringArray(java.lang.String str, java.lang.String delimiters)
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
str
- the String to tokenizedelimiters
- the delimiter characters, assembled as String
(each of those characters is individually considered as delimiter).StringTokenizer
,
String.trim()
,
delimitedListToStringArray(java.lang.String, java.lang.String)
public static java.lang.String[] tokenizeToStringArray(java.lang.String str, java.lang.String delimiters, boolean trimTokens, boolean ignoreEmptyTokens)
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
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'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).null
if the input String
was null
)StringTokenizer
,
String.trim()
,
delimitedListToStringArray(java.lang.String, java.lang.String)
public static java.lang.String[] delimitedListToStringArray(java.lang.String str, java.lang.String delimiter)
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
.
str
- the input Stringdelimiter
- the delimiter between elements (this is a single delimiter,
rather than a bunch individual delimiter characters)tokenizeToStringArray(java.lang.String, java.lang.String)
public static java.lang.String[] delimitedListToStringArray(java.lang.String str, java.lang.String delimiter, java.lang.String charsToDelete)
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
.
str
- the input Stringdelimiter
- 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.tokenizeToStringArray(java.lang.String, java.lang.String)
public static java.lang.String[] commaDelimitedListToStringArray(java.lang.String str)
str
- the input Stringpublic static java.util.Set<java.lang.String> commaDelimitedListToSet(java.lang.String str)
str
- the input Stringpublic static java.lang.String collectionToDelimitedString(java.util.Collection<?> coll, java.lang.String delim, java.lang.String prefix, java.lang.String suffix)
toString()
implementations.coll
- the Collection to displaydelim
- the delimiter to use (probably a ",")prefix
- the String to start each element withsuffix
- the String to end each element withpublic static java.lang.String collectionToDelimitedString(java.util.Collection<?> coll, java.lang.String delim)
toString()
implementations.coll
- the Collection to displaydelim
- the delimiter to use (probably a ",")public static java.lang.String collectionToCommaDelimitedString(java.util.Collection<?> coll)
toString()
implementations.coll
- the Collection to displaypublic static java.lang.String arrayToDelimitedString(java.lang.Object[] arr, java.lang.String delim)
toString()
implementations.arr
- the array to displaydelim
- the delimiter to use (probably a ",")public static java.lang.String arrayToCommaDelimitedString(java.lang.Object[] arr)
toString()
implementations.arr
- the array to display