Class Strings
String utility methods.
Mainly for internal use within the framework; consider
Apache'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. It also provides easy-to-use methods to convert between
delimited strings, such as CSV strings, and collections and arrays.
Borrowed from the Spring Framework
- Since:
- 16 April 2001
- Author:
- Rod Johnson, Juergen Hoeller, Keith Donald, Rob Harrop, Rick Evans, Arjen Poutsma, Sam Brannen, Brian Clozel
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String[]addStringToArray(String[] array, String str) Append the givenStringto the givenStringarray, returning a new array consisting of the input array contents plus the givenString.static StringapplyRelativePath(String path, String relativePath) Apply the given relative path to the given Java resource path, assuming standard Java folder separation (i.e.static StringConvert aStringarray into a comma delimitedString(i.e., CSV).static StringarrayToDelimitedString(Object[] arr, String delim) Convert aStringarray into a delimitedString(e.g.static Stringcapitalize(String str) Capitalize aString, changing the first letter to upper case as perCharacter.toUpperCase(char).static StringReturns a 'cleaned' representation of the specified argument.static StringNormalize the path by suppressing sequences like "path/.." and inner simple dots.static StringConvert aCollectioninto a delimitedString(e.g., CSV).static StringcollectionToDelimitedString(Collection<?> coll, String delim) Convert aCollectioninto a delimitedString(e.g.static StringcollectionToDelimitedString(Collection<?> coll, String delim, String prefix, String suffix) Convert aCollectionto a delimitedString(e.g.Convert a comma delimited list (e.g., a row from a CSV file) into a set.static String[]Convert a comma delimited list (e.g., a row from a CSV file) into an array of strings.static String[]concatenateStringArrays(String[] array1, String[] array2) Concatenate the givenStringarrays into one, with overlapping array elements included twice.static booleanCheck whether the givenCharSequencecontains any whitespace characters.static booleancontainsWhitespace(String str) Check whether the givenStringcontains any whitespace characters.static intcountOccurrencesOf(String str, String sub) Count the occurrences of the substringsubin stringstr.static StringDelete all occurrences of the given substring.static StringDelete any character in a givenString.static String[]delimitedListToStringArray(String str, String delimiter) Take aStringthat is a delimited list and convert it into aStringarray.static String[]delimitedListToStringArray(String str, String delimiter, String charsToDelete) Take aStringthat is a delimited list and convert it into aStringarray.static booleanendsWithIgnoreCase(String str, String suffix) Test if the givenStringends with the specified suffix, ignoring upper/lower case.static byte[]getBytesUtf8(String string) Encodes the given string into a sequence of bytes using the UTF-8 charset, storing the result into a new byte array.static StringgetFilename(String path) Extract the filename from the given Java resource path, e.g.static StringgetFilenameExtension(String path) Extract the filename extension from the given Java resource path, e.g.static booleanhasLength(CharSequence str) Check that the givenCharSequenceis neithernullnor of length 0.static booleanCheck that the givenStringis neithernullnor of length 0.static booleanhasText(CharSequence str) Check whether the givenCharSequencecontains actual text.static booleanCheck whether the givenStringcontains actual text.static booleanCheck whether the givenStringis empty.static String[]mergeStringArrays(String[] array1, String[] array2) Merge the givenStringarrays into one, with overlapping array elements only included once.static LocaleparseLocaleString(String localeString) Parse the givenlocaleStringvalue into aLocale.static TimeZoneparseTimeZoneString(String timeZoneString) Parse the giventimeZoneStringvalue into aTimeZone.static booleanpathEquals(String path1, String path2) Compare two paths after normalization of them.static StringQuote the givenStringwith single quotes.static ObjectquoteIfString(Object obj) Turn the given Object into aStringwith single quotes if it is aString; keeping the Object as-is else.static String[]removeDuplicateStrings(String[] array) Remove duplicate strings from the given array.static StringReplace all occurrences of a substring within a string with another string.static String[]sortStringArray(String[] array) Turn given sourceStringarray into sorted array.static String[]Split aStringat the first occurrence of the delimiter.static PropertiessplitArrayElementsIntoProperties(String[] array, String delimiter) Take an array of strings and split each element based on the given delimiter.static PropertiessplitArrayElementsIntoProperties(String[] array, String delimiter, String charsToDelete) Take an array of strings and split each element based on the given delimiter.static booleanstartsWithIgnoreCase(String str, String prefix) Test if the givenStringstarts with the specified prefix, ignoring upper/lower case.static StringstripFilenameExtension(String path) Strip the filename extension from the given Java resource path, e.g.static booleansubstringMatch(CharSequence str, int index, CharSequence substring) Test whether the given string matches the given substring at the given index.static String[]tokenizeToStringArray(String str, String delimiters) static String[]tokenizeToStringArray(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens) static StringtoLanguageTag(Locale locale) Determine the RFC 3066 compliant language tag, as used for the HTTP "Accept-Language" header.static String[]toStringArray(Collection<String> collection) Copy the givenCollectioninto aStringarray.static String[]toStringArray(Enumeration<String> enumeration) Copy the given Enumeration into aStringarray.static StringtrimAllWhitespace(String str) Trim all whitespace from the givenString: leading, trailing, and in between characters.static String[]trimArrayElements(String[] array) Trim the elements of the givenStringarray, callingString.trim()on each of them.static StringtrimLeadingCharacter(String str, char leadingCharacter) Trim all occurrences of the supplied leading character from the givenString.static StringTrim leading whitespace from the givenString.static StringtrimTrailingCharacter(String str, char trailingCharacter) Trim all occurrences of the supplied trailing character from the givenString.static StringTrim trailing whitespace from the givenString.static StringtrimWhitespace(String str) Trim leading and trailing whitespace from the givenString.static Stringuncapitalize(String str) Uncapitalize aString, changing the first letter to lower case as perCharacter.toLowerCase(char).static StringUnqualify a string qualified by a '.' dot character.static StringUnqualify a string qualified by a separator character.static StringDecode the given encoded URI component value.
-
Constructor Details
-
Strings
public Strings()
-
-
Method Details
-
isEmpty
Check whether the givenStringis empty.This method accepts any Object as an argument, comparing it to
nulland the empty String. As a consequence, this method will never returntruefor 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.
- Parameters:
str- the candidate String- Returns:
- true if string is empty or null;
- Since:
- 3.2.1
-
hasLength
Check that the givenCharSequenceis neithernullnor of length 0.Note: this method returns
truefor aCharSequencethat purely consists of whitespace.StringUtils.hasLength(null) = false StringUtils.hasLength("") = false StringUtils.hasLength(" ") = true StringUtils.hasLength("Hello") = true- Parameters:
str- theCharSequenceto check (may benull)- Returns:
trueif theCharSequenceis notnulland has length- See Also:
-
hasLength
Check that the givenStringis neithernullnor of length 0.Note: this method returns
truefor aStringthat purely consists of whitespace.- Parameters:
str- theStringto check (may benull)- Returns:
trueif theStringis notnulland has length- See Also:
-
hasText
Check whether the givenCharSequencecontains actual text.More specifically, this method returns
trueif theCharSequenceis 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 ") = true- Parameters:
str- theCharSequenceto check (may benull)- Returns:
trueif theCharSequenceis notnull, its length is greater than 0, and it does not contain whitespace only- See Also:
-
hasText
Check whether the givenStringcontains actual text.More specifically, this method returns
trueif theStringis notnull, its length is greater than 0, and it contains at least one non-whitespace character.- Parameters:
str- theStringto check (may benull)- Returns:
trueif theStringis notnull, its length is greater than 0, and it does not contain whitespace only- See Also:
-
containsWhitespace
Check whether the givenCharSequencecontains any whitespace characters.- Parameters:
str- theCharSequenceto check (may benull)- Returns:
trueif theCharSequenceis not empty and contains at least 1 whitespace character- See Also:
-
containsWhitespace
Check whether the givenStringcontains any whitespace characters.- Parameters:
str- theStringto check (may benull)- Returns:
trueif theStringis not empty and contains at least 1 whitespace character- See Also:
-
trimWhitespace
Trim leading and trailing whitespace from the givenString.- Parameters:
str- theStringto check- Returns:
- the trimmed
String - See Also:
-
trimAllWhitespace
Trim all whitespace from the givenString: leading, trailing, and in between characters.- Parameters:
str- theStringto check- Returns:
- the trimmed
String - See Also:
-
trimLeadingWhitespace
Trim leading whitespace from the givenString.- Parameters:
str- theStringto check- Returns:
- the trimmed
String - See Also:
-
trimTrailingWhitespace
Trim trailing whitespace from the givenString.- Parameters:
str- theStringto check- Returns:
- the trimmed
String - See Also:
-
trimLeadingCharacter
Trim all occurrences of the supplied leading character from the givenString.- Parameters:
str- theStringto checkleadingCharacter- the leading character to be trimmed- Returns:
- the trimmed
String
-
trimTrailingCharacter
Trim all occurrences of the supplied trailing character from the givenString.- Parameters:
str- theStringto checktrailingCharacter- the trailing character to be trimmed- Returns:
- the trimmed
String
-
startsWithIgnoreCase
Test if the givenStringstarts with the specified prefix, ignoring upper/lower case.- Parameters:
str- theStringto checkprefix- the prefix to look for- Returns:
- true if
strstars withprefix - See Also:
-
endsWithIgnoreCase
Test if the givenStringends with the specified suffix, ignoring upper/lower case.- Parameters:
str- theStringto checksuffix- the suffix to look for- Returns:
- true if
strends with @{suffix} - See Also:
-
substringMatch
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 againstsubstring- the substring to match at the given index- Returns:
- true if substring matches, otherwise false
-
countOccurrencesOf
Count the occurrences of the substringsubin stringstr.- Parameters:
str- string to search in. Return 0 if this isnull.sub- string to search for. Return 0 if this isnull.- Returns:
- count of
sub
-
replace
Replace all occurrences of a substring within a string with another string.- Parameters:
inString-Stringto examineoldPattern-Stringto replacenewPattern-Stringto insert- Returns:
- a
Stringwith the replacements
-
delete
Delete all occurrences of the given substring.- Parameters:
inString- the originalStringpattern- the pattern to delete all occurrences of- Returns:
- the resulting
String
-
deleteAny
Delete any character in a givenString.- Parameters:
inString- the originalStringcharsToDelete- a set of characters to delete. E.g. "az\n" will delete 'a's, 'z's and new lines.- Returns:
- the resulting
String
-
quote
Quote the givenStringwith single quotes.- Parameters:
str- the inputString(e.g. "myString")- Returns:
- the quoted
String(e.g. "'myString'"), ornullif the input wasnull
-
quoteIfString
Turn the given Object into aStringwith single quotes if it is aString; 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 aString
-
unqualify
Unqualify a string qualified by a '.' dot character. For example, "this.name.is.qualified", returns "qualified".- Parameters:
qualifiedName- the qualified name- Returns:
- unqualified string
-
unqualify
Unqualify a string qualified by a separator character. For example, "this:name:is:qualified" returns "qualified" if using a ':' separator.- Parameters:
qualifiedName- the qualified nameseparator- the separator- Returns:
- unqualified string
-
capitalize
Capitalize aString, changing the first letter to upper case as perCharacter.toUpperCase(char). No other letters are changed.- Parameters:
str- theStringto capitalize, may benull- Returns:
- the capitalized
String, ornullif the supplied string isnull
-
uncapitalize
Uncapitalize aString, changing the first letter to lower case as perCharacter.toLowerCase(char). No other letters are changed.- Parameters:
str- theStringto uncapitalize, may benull- Returns:
- the uncapitalized
String, ornullif the supplied string isnull
-
getFilename
Extract the filename from the given Java resource path, e.g."mypath/myfile.txt" -> "myfile.txt".- Parameters:
path- the file path (may benull)- Returns:
- the extracted filename, or
nullif none
-
getFilenameExtension
Extract the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "txt".- Parameters:
path- the file path (may benull)- Returns:
- the extracted filename extension, or
nullif none
-
stripFilenameExtension
Strip the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "mypath/myfile".- Parameters:
path- the file path (may benull)- Returns:
- the path with stripped filename extension,
or
nullif none
-
applyRelativePath
Apply the given relative path to the given Java resource 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
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
Compare two paths after normalization of them.- Parameters:
path1- first path for comparisonpath2- second path for comparison- Returns:
- whether the two paths are equivalent after normalization
-
uriDecode
Decode the given encoded URI component value. Based on the following rules:- Alphanumeric characters
"a"through"z","A"through"Z", and"0"through"9"stay the same. - Special characters
"-","_",".", and"*"stay the same. - A sequence "
%<i>xy</i>" is interpreted as a hexadecimal representation of the character.
- Parameters:
source- the encoded String (may benull)charset- the character set- Returns:
- the decoded value
- Throws:
IllegalArgumentException- when the given source contains invalid encoded sequences- Since:
- 5.0
- See Also:
- Alphanumeric characters
-
parseLocaleString
Parse the givenlocaleStringvalue into aLocale.This is the inverse operation of
Locale's toString.- Parameters:
localeString- the localeString, followingLocale'stoString()format ("en", "en_UK", etc); also accepts spaces as separators, as an alternative to underscores- Returns:
- a corresponding
Localeinstance - Throws:
IllegalArgumentException- in case of an invalid locale specification
-
toLanguageTag
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
-
parseTimeZoneString
Parse the giventimeZoneStringvalue into aTimeZone.- Parameters:
timeZoneString- the time zoneString, followingTimeZone.getTimeZone(String)but throwingIllegalArgumentExceptionin case of an invalid time zone specification- Returns:
- a corresponding
TimeZoneinstance - Throws:
IllegalArgumentException- in case of an invalid time zone specification
-
addStringToArray
Append the givenStringto the givenStringarray, returning a new array consisting of the input array contents plus the givenString.- Parameters:
array- the array to append to (can benull)str- theStringto append- Returns:
- the new array (never
null)
-
concatenateStringArrays
Concatenate the givenStringarrays into one, with overlapping array elements included twice.The order of elements in the original arrays is preserved.
- Parameters:
array1- the first array (can benull)array2- the second array (can benull)- Returns:
- the new array (
nullif both given arrays werenull)
-
mergeStringArrays
Merge the givenStringarrays 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:
array1- the first array (can benull)array2- the second array (can benull)- Returns:
- the new array (
nullif both given arrays werenull)
-
sortStringArray
Turn given sourceStringarray into sorted array.- Parameters:
array- the source array- Returns:
- the sorted array (never
null)
-
toStringArray
Copy the givenCollectioninto aStringarray.The
Collectionmust containStringelements only.- Parameters:
collection- theCollectionto copy- Returns:
- the
Stringarray (nullif the suppliedCollectionwasnull)
-
toStringArray
Copy the given Enumeration into aStringarray. The Enumeration must containStringelements only.- Parameters:
enumeration- the Enumeration to copy- Returns:
- the
Stringarray (nullif the passed-in Enumeration wasnull)
-
trimArrayElements
Trim the elements of the givenStringarray, callingString.trim()on each of them.- Parameters:
array- the originalStringarray- Returns:
- the resulting array (of the same size) with trimmed elements
-
removeDuplicateStrings
Remove duplicate strings from the given array.As of 4.2, it preserves the original order, as it uses a
LinkedHashSet.- Parameters:
array- theStringarray- Returns:
- an array without duplicates, in natural sort order
-
split
Split aStringat the first occurrence of the delimiter. Does not include the delimiter in the result.- Parameters:
toSplit- the string to splitdelimiter- 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
nullif the delimiter wasn't found in the given inputString
-
splitArrayElementsIntoProperties
Take an array of strings and split each element based on the given delimiter. APropertiesinstance 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
Propertiesinstance.- Parameters:
array- the array to processdelimiter- to split each element using (typically the equals symbol)- Returns:
- a
Propertiesinstance representing the array contents, ornullif the array to process wasnullor empty
-
splitArrayElementsIntoProperties
public static Properties splitArrayElementsIntoProperties(String[] array, String delimiter, String charsToDelete) Take an array of strings and split each element based on the given delimiter. APropertiesinstance 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
Propertiesinstance.- Parameters:
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), ornullif no removal should occur- Returns:
- a
Propertiesinstance representing the array contents, ornullif the array to process wasnullor empty
-
tokenizeToStringArray
Tokenize the givenStringinto aStringarray via aStringTokenizer.Trims tokens and omits empty tokens.
The given
delimitersstring can 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 usingdelimitedListToStringArray(java.lang.String, java.lang.String).- Parameters:
str- theStringto tokenizedelimiters- the delimiter characters, assembled as aString(each of the characters is individually considered as a delimiter)- Returns:
- an array of the tokens
- See Also:
-
tokenizeToStringArray
public static String[] tokenizeToStringArray(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens) Tokenize the givenStringinto aStringarray via aStringTokenizer.The given
delimitersstring can 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 usingdelimitedListToStringArray(java.lang.String, java.lang.String).- Parameters:
str- theStringto tokenizedelimiters- the delimiter characters, assembled as aString(each of the characters is individually considered as a delimiter)trimTokens- trim the tokens viaString.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 (
nullif the inputStringwasnull) - See Also:
-
delimitedListToStringArray
Take aStringthat is a delimited list and convert it into aStringarray.A single
delimitermay consist of more than one character, but it will still be considered as a single delimiter string, rather than as bunch of potential delimiter characters, in contrast totokenizeToStringArray(java.lang.String, java.lang.String).- Parameters:
str- the inputStringdelimiter- 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:
-
delimitedListToStringArray
public static String[] delimitedListToStringArray(String str, String delimiter, String charsToDelete) Take aStringthat is a delimited list and convert it into aStringarray.A single
delimitermay consist of more than one character, but it will still be considered as a single delimiter string, rather than as bunch of potential delimiter characters, in contrast totokenizeToStringArray(java.lang.String, java.lang.String).- Parameters:
str- the inputStringdelimiter- 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 aString- Returns:
- an array of the tokens in the list
- See Also:
-
commaDelimitedListToStringArray
Convert a comma delimited list (e.g., a row from a CSV file) into an array of strings.- Parameters:
str- the inputString- Returns:
- an array of strings, or the empty array in case of empty input
-
commaDelimitedListToSet
Convert a comma delimited list (e.g., a row from a CSV file) into a set.Note that this will suppress duplicates, and as of 4.2, the elements in the returned set will preserve the original order in a
LinkedHashSet.- Parameters:
str- the inputString- Returns:
- a set of
Stringentries in the list - See Also:
-
collectionToDelimitedString
public static String collectionToDelimitedString(Collection<?> coll, String delim, String prefix, String suffix) - Parameters:
coll- theCollectionto convertdelim- the delimiter to use (typically a ",")prefix- theStringto start each element withsuffix- theStringto end each element with- Returns:
- the delimited
String
-
collectionToDelimitedString
Convert aCollectioninto a delimitedString(e.g. CSV).Useful for
toString()implementations.- Parameters:
coll- theCollectionto convertdelim- the delimiter to use (typically a ",")- Returns:
- the delimited
String
-
collectionToCommaDelimitedString
Convert aCollectioninto a delimitedString(e.g., CSV).Useful for
toString()implementations.- Parameters:
coll- theCollectionto convert- Returns:
- the delimited
String
-
arrayToDelimitedString
Convert aStringarray into a delimitedString(e.g. CSV).Useful for
toString()implementations.- Parameters:
arr- the array to displaydelim- the delimiter to use (typically a ",")- Returns:
- the delimited
String
-
arrayToCommaDelimitedString
Convert aStringarray into a comma delimitedString(i.e., CSV).Useful for
toString()implementations.- Parameters:
arr- the array to display- Returns:
- the delimited
String
-
clean
Returns a 'cleaned' representation of the specified argument. 'Cleaned' is defined as the following:- If the specified
Stringisnull, 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
Therefore this method always ensures that any given string has trimmed text, and if it doesn't,
nullis returned.- Parameters:
s- the input String to clean.- Returns:
- a populated-but-trimmed String or
nullotherwise
- If the specified
-
getBytesUtf8
Encodes the given string into a sequence of bytes using the UTF-8 charset, storing the result into a new byte array.- Parameters:
string- the String to encode, may benull- Returns:
- encoded bytes, or
nullif the input string wasnull - Throws:
NullPointerException- Thrown ifStandardCharsets.UTF_8is not initialized, which should never happen since it is required by the Java platform specification.- See Also:
-