StringUtil
Strings manipulation is a common and frequent task in everyday life of a
developer. JDK doesn't provide much help on this topic. Jodd comes in
a rescue! It's StringUtil
class offers more than 100 additional
string utilities (and still growing). And each one is optimized for
speed. Description of some methods follows, more details can be founded
in javadoc and test cases.
Replacing
replace()
is one of the most missing functionality String needs. It
doesn't use regular expression, just simply replaces all founded
substrings. Alternatively, there are method that replaces just first or
last occurrence of some substring: replaceFirst()
and replaceLast()
,
respectively.
Besides substrings, it is possible to replace a single character as well
as several characters at once, by using replaceChars()
.
Removing
Similar as replace methods, removing methods removes all substring
occurrences from provided target string: remove()
. The same can be
done for removing single character, as well as more characters at once:
removeChars()
.
Empty string detection
StringUtil
provides methods for detection of empty and blank strings.
Empty strings are those that are either null
or with zero length;
isEmpty()
, isNotEmpty()
. Blank strings are those that are either
empty or that contains just whitespaces; isBlank()
, isNotBlank()
.
StringUtil
also may check several strings at once: isAllBlank()
,
isAllEmpty()
.
Safe equals
equals()
offers safe compression of provided strings: it will not fail
if one of the arguments is null
. Similarly, there is
equalsIgnoreCase()
for checking two strings ignoring characters case.
Capitalization
Two methods that are always needed: capitalize()
and uncapitalize()
.
Splitting
When parsing, splitting string into substrings is also a common task.
StringUtil
offers several split methods.
split(String src, String delimiter)
splits a string in several parts
(tokens) that are separated by delimiter. Delimiter is always
surrounded by two strings (tokens)! If there is no content between two
delimiters, empty string will be returned for that token. Therefore, the
length of the returned array will always be: #delimiters + 1. This
method is much, much faster than regexp variant String.split()
and
just a bit faster than StringTokenizer
.
splitc(String src, char d)
and splitc(String src, String d)
splits a
string in several parts (tokens) that are separated by delimiter
characters. Delimiter may contains any number of character, and it
is always surrounded by two strings.
IndexOfs
StringUtil
provides many missing indexOf
methods. It is possible to
scan just an inner part of a string, to ignore case while searching, to
scan in both directions (from start or and of the string)… There are
also more scanners, such: lastIndexOfWhitespace()
and
lastIndexOfNonWhitespace()
.
In same manner, startsWithIgnoreCase()
and endsWithIgnoreCase()
are
commonly needed methods.
But that is not all:) It is also possible to scan for more strings in
the same time. Such methods return an int
array, where first element
is a substring index and second element is founded position.
There are also character-oriented scanners, that search for first/last occurrence of provided character(s).
Strips, crops, trims and cuts
Another set of common methods for trimming (removing whitespaces from
left and right), cropping (setting empty strings to null
), stripping
(first or last characters from a string in a safe manner) and cutting
(cut a string from beginning or the end up to first occurrence of some
substring, or cutting last or first words).
indexOfRegion
This is a powerful region scanning method that returns indexes of the first occurrence of some string region. Region is and substring defined by its left and right boundary. Return value is an array of the following indexes: start of left boundary index, region start index (i.e. end of left boundary), region end index (i.e. start of right boundary) and end of right boundary index.
Escape character may be used to prefix boundaries so they can be
ignored. Double escaped regions will be found, and first index of the
result will be decreased to include one escape character. If region is
not founded, null
is returned.