org.compass.core.util
Class StringUtils

java.lang.Object
  extended by org.compass.core.util.StringUtils

public abstract 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 StringBuffer classes, such as the ability to replace 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.

Author:
kimchy

Constructor Summary
StringUtils()
           
 
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, char delim)
          Convenience method to return a String array as a delimited (e.g.
static String arrayToDelimitedString(Object[] arr, String delim)
          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)
          Convenience method to return a Collection as a delimited (e.g.
static String collectionToDelimitedString(Collection coll, String delim, String prefix, String suffix)
          Convenience method to return a Collection as a delimited (e.g.
static Set 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 int countOccurrencesOf(String str, String sub)
          Count the occurrences of the substring in string s.
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 delimiter)
          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 String getFilename(String path)
          Extract the filename from the given path, e.g.
static boolean hasLength(String str)
          Check if a String has length.
static boolean hasText(String str)
          Check if a String has text.
static Locale parseLocaleString(String localeString)
          Parse the given locale string into a java.util.Locale.
static boolean pathEquals(String path1, String path2)
          Compare two paths after normalization of them.
static String qualify(String prefix, String name)
           
static String replace(String inString, String oldPattern, String newPattern)
          Replace all occurences of a substring within a string with another string.
static String reverse(String str)
          Reverses a string.
static String[] sortStringArray(String[] source)
          Turn given source String array into sorted array.
static String[] split(String toSplit, String delimiter)
          Split a String at the first occurrence of the delimiter.
static Properties splitArrayElementsIntoProperties(String[] array, String delimiter)
          Take an array Strings and split each element based on the given delimiter.
static Properties splitArrayElementsIntoProperties(String[] array, String delimiter, 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[] 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 trimLeadingWhitespace(String str)
          Trim leading whitespace from the given String.
static String trimTrailingWhitespace(String str)
          Trim 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
 

Constructor Detail

StringUtils

public StringUtils()
Method Detail

hasLength

public static boolean hasLength(String str)
Check if a String has length.

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

Parameters:
str - the String to check, may be null
Returns:
true if the String is not null and has length

hasText

public static boolean hasText(String str)
Check if a String has text. More specifically, returns true if the string not null, it's length is > 0, and it has 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 String to check, may be null
Returns:
true if the String is not null, length > 0, and not whitespace only
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)

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)

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.

replace

public static String replace(String inString,
                             String oldPattern,
                             String newPattern)
Replace all occurences of a substring within a string with another string.

Parameters:
inString - String to examine
oldPattern - String to replace
newPattern - String to insert
Returns:
a String with the replacements

delete

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

Parameters:
pattern - the pattern to delete all occurrences of

deleteAny

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

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

qualify

public static String qualify(String prefix,
                             String name)

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
Returns:
the extracted filename

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 dashes.

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 comparizon
path2 - Second path for comparizon
Returns:
True if the two paths are equivalent after normalization

parseLocaleString

public static Locale parseLocaleString(String localeString)
Parse the given locale string into a java.util.Locale. This is the inverse operation of Locale's toString.

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

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
str - the String to append
Returns:
the new array

sortStringArray

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

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

split

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

Parameters:
toSplit - the string to split
delimiter - 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[] array,
                                                          String delimiter)
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:
array - the array to process
delimiter - 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[] array,
                                                          String delimiter,
                                                          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:
array - the array to process
delimiter - 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
See Also:
StringTokenizer, String.trim(), delimitedListToStringArray(java.lang.String, java.lang.String)

delimitedListToStringArray

public static String[] delimitedListToStringArray(String str,
                                                  String delimiter)
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)
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 - CSV list
Returns:
an array of Strings, or the empty array if s is null

commaDelimitedListToSet

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

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

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 - array to display. Elements may be of any type (toString will be called on each element).
delim - delimiter to use (probably a ",")

arrayToDelimitedString

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

Parameters:
arr - array to display. Elements may be of any type (toString will be called on each element).
delim - delimiter to use (probably a ",")

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 - Collection to display
delim - delimiter to use (probably a ",")
prefix - string to start each element with
suffix - string to end each element with

collectionToDelimitedString

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

Parameters:
coll - Collection to display
delim - delimiter to use (probably a ",")

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 - array to display. Elements may be of any type (toString will be called on each element).

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 - Collection to display

reverse

public static String reverse(String str)
Reverses a string.

Parameters:
str - The String to reverse
Returns:
The reversed string


Copyright (c) 2004-2008 The Compass Project.