Class StringUtils
Operations on String that are
null safe.
- IsEmpty/IsBlank - checks if a String contains text
- Trim/Strip - removes leading and trailing whitespace
- Equals - compares two strings null-safe
- IndexOf/LastIndexOf/Contains - null-safe index-of checks
- IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut - index-of any of a set of Strings
- ContainsOnly/ContainsNone - does String contains only/none of these characters
- Substring/Left/Right/Mid - null-safe substring extractions
- SubstringBefore/SubstringAfter/SubstringBetween - substring extraction relative to other strings
- Split/Join - splits a String into an array of substrings and vice versa
- Remove/Delete - removes part of a String
- Replace/Overlay - Searches a String and replaces one String with another
- Chomp/Chop - removes the last part of a String
- LeftPad/RightPad/Center/Repeat - pads a String
- UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize - changes the case of a String
- CountMatches - counts the number of occurrences of one String in another
- IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable - checks the characters in a String
- DefaultString - protects against a null input String
- Reverse/ReverseDelimited - reverses a String
- Abbreviate - abbreviates a string using ellipsis
- Difference - compares two Strings and reports on their differences
- LevensteinDistance - the number of changes needed to change one String into another
The StringUtils class defines certain words related to
String handling.
- null -
null - empty - a zero-length string (
"") - space - the space character (
' ', char 32) - whitespace - the characters defined by
Character.isWhitespace(char) - trim - the characters <= 32 as in
String.trim()
StringUtils handles null input Strings quietly.
That is to say that a null input will return null.
Where a boolean or int is being returned
details vary by method.
A side effect of the null handling is that a
NullPointerException should be considered a bug in
StringUtils (except for deprecated methods).
Methods in this class give sample code to explain their operation.
The symbol * is used to indicate any input including null.
- Since:
- 1.0
- Version:
- $Id$
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionStringUtilsinstances should NOT be constructed in standard programming. -
Method Summary
Modifier and TypeMethodDescriptionstatic StringbytesToHex(byte[] bytes) static StringNormalize the path by suppressing sequences like "path/.." and inner simple dots.static booleancodeAwareEqualsIgnoreSpaces(String in1, String in2) Compares two string being equals ignoring whitespaces, but preserving whitespace between double-quotes The two inputs MUST BE valid DRL/Java syntax (this validation is NOT performed by this method, this method assumes they are).static intcodeAwareIndexOf(String str, String searched) static intcodeAwareIndexOf(String str, String searched, int fromIndex) static StringcollectionToDelimitedString(Collection coll, String delim) Convenience method to return a Collection as a delimited (e.g.static StringcollectionToDelimitedString(Collection coll, String delim, String prefix, String suffix) Convenience method to return a Collection as a delimited (e.g.static StringDelete any character in a given String.static String[]delimitedListToStringArray(String str, String delimiter) 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 booleandoesFirstPropHaveListMapAccessor(String expression) static booleanequalsIgnoreSpaces(String s1, String s2) static StringescapeXmlString(String string) static StringextractFirstIdentifier(String string, int start) static intextractFirstIdentifier(String string, StringBuilder builder, int start) Method that tries to extract identifiers from a Srting.static intfindEndOfBlockIndex(CharSequence string, int startOfMethodArgsIndex) static intfindEndOfMethodArgsIndex(CharSequence string, int startOfMethodArgsIndex) static Stringstatic StringgetPkgUUID(String gav, String packageName) Retrieve a consistently reproducible package unique identifier.static intindexOfOutOfQuotes(String str, char searched) static intindexOfOutOfQuotes(String str, String searched) static intindexOfOutOfQuotes(String str, String searched, int fromIndex) static booleanstatic booleanisEmpty(CharSequence str) Checks if a String is empty ("") or null.static booleanisIdentifier(String expr) static Stringstatic Stringstatic CharacterlookAheadIgnoringSpaces(String expression, int cursor) static Stringstatic Stringpadding(int repeat, char padChar) Returns padding using the specified delimiter repeated to a given length.static StringreadFileAsString(Reader reader) static StringRepeat a Stringrepeattimes to form a new String.static StringReplace all occurences of a substring within a string with another string.static StringreplaceOutOfQuotes(String s, String oldValue, String newValue) static intskipBlanks(String string, int start) splitArgumentsList(CharSequence string) splitArgumentsList(CharSequence string, boolean trimArgs) splitConstraints(CharSequence string, boolean trimArgs) splitModifyBlock(CharSequence string) static String[]splitPreserveAllTokens(String str, String separatorChars) Splits the provided text into an array, separators specified, preserving all tokens, including empty tokens created by adjacent separators.splitStatements(CharSequence string) static doublestringSimilarity(String s1, String s2, StringUtils.SIMILARITY_STRATS method) static StringtoString(BufferedReader reader) static StringtoString(InputStream is) static Stringstatic String[]toStringArray(Collection collection) Copy the given Collection into a String array.static URIstatic Stringstatic voidunescapeJava(Writer out, String str) Unescapes any Java literals found in theStringto aWriter.static StringunescapeJava(String str) Unescapes any Java literals found in theString.static Stringuuid()
-
Field Details
-
EMPTY_STRING_ARRAY
An empty immutableStringarray. -
EMPTY
The empty String"".- Since:
- 2.0
- See Also:
-
INDEX_NOT_FOUND
public static final int INDEX_NOT_FOUNDRepresents a failed index search.- Since:
- 2.1
- See Also:
-
-
Constructor Details
-
StringUtils
public StringUtils()StringUtilsinstances should NOT be constructed in standard programming. Instead, the class should be used asStringUtils.trim(" foo ");.This constructor is public to permit tools that require a JavaBean instance to operate.
-
-
Method Details
-
ucFirst
-
lcFirst
-
lcFirstForBean
-
isEmpty
Checks if a String is empty ("") or null.
StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false StringUtils.isEmpty("bob") = false StringUtils.isEmpty(" bob ") = falseNOTE: This method changed in Lang version 2.0. It no longer trims the String. That functionality is available in isBlank().
- Parameters:
str- the String to check, may be null- Returns:
trueif the String is empty or null
-
repeat
Repeat a String
repeattimes to form a new String.StringUtils.repeat(null, 2) = null StringUtils.repeat("", 0) = "" StringUtils.repeat("", 2) = "" StringUtils.repeat("a", 3) = "aaa" StringUtils.repeat("ab", 2) = "abab" StringUtils.repeat("a", -2) = ""- Parameters:
str- the String to repeat, may be nullrepeat- number of times to repeat str, negative treated as zero- Returns:
- a new String consisting of the original String repeated,
nullif null String input
-
splitPreserveAllTokens
Splits the provided text into an array, separators specified, preserving all tokens, including empty tokens created by adjacent separators. This is an alternative to using StringTokenizer.
The separator is not included in the returned String array. Adjacent separators are treated as separators for empty tokens. For more control over the split use the StrTokenizer class.
A
nullinput String returnsnull. AnullseparatorChars splits on whitespace.StringUtils.splitPreserveAllTokens(null, *) = null StringUtils.splitPreserveAllTokens("", *) = [] StringUtils.splitPreserveAllTokens("abc def", null) = ["abc", "def"] StringUtils.splitPreserveAllTokens("abc def", " ") = ["abc", "def"] StringUtils.splitPreserveAllTokens("abc def", " ") = ["abc", "", def"] StringUtils.splitPreserveAllTokens("ab:cd:ef", ":") = ["ab", "cd", "ef"] StringUtils.splitPreserveAllTokens("ab:cd:ef:", ":") = ["ab", "cd", "ef", ""] StringUtils.splitPreserveAllTokens("ab:cd:ef::", ":") = ["ab", "cd", "ef", "", ""] StringUtils.splitPreserveAllTokens("ab::cd:ef", ":") = ["ab", "", cd", "ef"] StringUtils.splitPreserveAllTokens(":cd:ef", ":") = ["", cd", "ef"] StringUtils.splitPreserveAllTokens("::cd:ef", ":") = ["", "", cd", "ef"] StringUtils.splitPreserveAllTokens(":cd:ef:", ":") = ["", cd", "ef", ""]- Parameters:
str- the String to parse, may benullseparatorChars- the characters used as the delimiters,nullsplits on whitespace- Returns:
- an array of parsed Strings,
nullif null String input - Since:
- 2.1
-
padding
Returns padding using the specified delimiter repeated to a given length.
StringUtils.padding(0, 'e') = "" StringUtils.padding(3, 'e') = "eee" StringUtils.padding(-2, 'e') = IndexOutOfBoundsException
Note: this method doesn't not support padding with Unicode Supplementary Characters as they require a pair of
chars to be represented. If you are needing to support full I18N of your applications consider usingrepeat(String, int)instead.- Parameters:
repeat- number of times to repeat delimpadChar- character to repeat- Returns:
- String with repeated character
- Throws:
IndexOutOfBoundsException- ifrepeat < 0- See Also:
-
readFileAsString
-
unescapeJava
Unescapes any Java literals found in the
String. For example, it will turn a sequence of'\'and'n'into a newline character, unless the'\'is preceded by another'\'.- Parameters:
str- theStringto unescape, may be null- Returns:
- a new unescaped
String,nullif null string input
-
unescapeJava
Unescapes any Java literals found in the
Stringto aWriter.For example, it will turn a sequence of
'\'and'n'into a newline character, unless the'\'is preceded by another'\'.A
nullstring input has no effect.- Parameters:
out- theWriterused to output unescaped charactersstr- theStringto unescape, may be null- Throws:
IllegalArgumentException- if the Writer isnullIOException- if error occurs on underlying Writer
-
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 Borrowed from Spring, under the ASL2.0 license.
-
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 fortoString()implementations.- Parameters:
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 with- Returns:
- the delimited String Borrowed from Spring, under the ASL2.0 license.
-
collectionToDelimitedString
Convenience method to return a Collection as a delimited (e.g. CSV) String. E.g. useful fortoString()implementations.- Parameters:
coll- the Collection to displaydelim- the delimiter to use (probably a ",")- Returns:
- the delimited String Borrowed from Spring, under the ASL2.0 license.
-
replace
Replace all occurences of a substring within a string with another string.- Parameters:
inString- String to examineoldPattern- String to replacenewPattern- String to insert- Returns:
- a String with the replacements Borrowed from Spring, under the ASL2.0 license.
-
toURI
- Throws:
URISyntaxException
-
escapeXmlString
-
delimitedListToStringArray
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 Stringdelimiter- 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 Borrowed from Spring, under the ASL2.0 license.
-
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 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.- Returns:
- an array of the tokens in the list Borrowed from Spring, under the ASL2.0 license.
-
toStringArray
Copy the given Collection into a String array. The Collection must contain String elements only.- Parameters:
collection- the Collection to copy- Returns:
- the String array (
nullif the passed-in Collection wasnull) Borrowed from Spring, under the ASL2.0 license.
-
deleteAny
Delete any character in a given String.- Parameters:
inString- the original StringcharsToDelete- a set of characters to delete. E.g. "az\n" will delete 'a's, 'z's and new lines.- Returns:
- the resulting String Borrowed from Spring, under the ASL2.0 license.
-
toString
- Throws:
IOException
-
toString
- Throws:
IOException
-
toString
- Throws:
IOException
-
getPkgUUID
Retrieve a consistently reproducible package unique identifier. It uses both gav and packageName- Parameters:
gav-packageName-- Returns:
-
md5Hash
-
bytesToHex
-
generateUUID
-
extractFirstIdentifier
-
extractFirstIdentifier
Method that tries to extract identifiers from a Srting. First, it tries to identify "quoted" part, that should be ignored. Then, it tries to extract a String that is valid as java identifier. If an identifier is found, returns the last index of the identifier itself, otherwise the length of the string itselfCharacter.isJavaIdentifierStart(char)Character.isJavaIdentifierPart(char)- Parameters:
string-builder-start-- Returns:
-
skipBlanks
-
splitStatements
-
splitModifyBlock
-
splitStatementsAcrossBlocks
-
splitArgumentsList
-
splitArgumentsList
-
splitConstraints
-
codeAwareEqualsIgnoreSpaces
Compares two string being equals ignoring whitespaces, but preserving whitespace between double-quotes The two inputs MUST BE valid DRL/Java syntax (this validation is NOT performed by this method, this method assumes they are). Null check: if either of the input is null, this method will return true IFF both are null. Empty check: if either of the input is an empty string, it will be considered as a whitespace during code-aware comparison. -
findEndOfMethodArgsIndex
-
findEndOfBlockIndex
-
indexOfOutOfQuotes
-
indexOfOutOfQuotes
-
codeAwareIndexOf
-
codeAwareIndexOf
-
replaceOutOfQuotes
-
indexOfOutOfQuotes
-
isIdentifier
-
isDereferencingIdentifier
-
stringSimilarity
-
equalsIgnoreSpaces
-
uuid
-
doesFirstPropHaveListMapAccessor
-
lookAheadIgnoringSpaces
-