类 StringUtils


  • public abstract class StringUtils
    extends Object
    Miscellaneous 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.

    从以下版本开始:
    16 April 2001
    作者:
    Rod Johnson, Juergen Hoeller, Keith Donald, Rob Harrop, Rick Evans, Arjen Poutsma, Sam Brannen, Brian Clozel
    • 方法详细资料

      • isEmpty

        public static boolean isEmpty​(@Nullable
                                      Object str)
        Check whether the given object (possibly a String) is empty. This is effectively a shortcut for !hasLength(String).

        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.

        Note: If the object is typed to String upfront, prefer hasLength(String) or hasText(String) instead.

        参数:
        str - the candidate object (possibly a String)
        从以下版本开始:
        3.2.1
        另请参阅:
        hasLength(String), hasText(String)
      • hasLength

        public static boolean hasLength​(@Nullable
                                        CharSequence str)
        Check that the given CharSequence is neither null nor of length 0.

        Note: this method returns 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 length
        另请参阅:
        hasLength(String), hasText(CharSequence)
      • hasLength

        public static boolean hasLength​(@Nullable
                                        String str)
        Check that the given String is neither null nor of length 0.

        Note: this method returns 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 length
        另请参阅:
        hasLength(CharSequence), hasText(String)
      • hasText

        public static boolean hasText​(@Nullable
                                      CharSequence str)
        Check whether the given CharSequence contains actual text.

        More specifically, this method returns true if the CharSequence is 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 only
        另请参阅:
        hasText(String), hasLength(CharSequence), Character.isWhitespace(char)
      • hasText

        public static boolean hasText​(@Nullable
                                      String str)
        Check whether the given String contains actual text.

        More specifically, this method returns true if the String is 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 only
        另请参阅:
        hasText(CharSequence), hasLength(String), Character.isWhitespace(char)
      • containsWhitespace

        public static boolean containsWhitespace​(@Nullable
                                                 CharSequence str)
        Check whether the given CharSequence contains any whitespace characters.
        参数:
        str - the CharSequence to check (may be null)
        返回:
        true if the CharSequence is not empty and contains at least 1 whitespace character
        另请参阅:
        Character.isWhitespace(char)
      • containsWhitespace

        public static boolean containsWhitespace​(@Nullable
                                                 String str)
        Check whether the given String contains any whitespace characters.
        参数:
        str - the String to check (may be null)
        返回:
        true if the String is not empty and contains at least 1 whitespace character
        另请参阅:
        containsWhitespace(CharSequence)
      • trimLeadingCharacter

        public static String trimLeadingCharacter​(String str,
                                                  char leadingCharacter)
        Trim all occurrences of the supplied leading character from the given String.
        参数:
        str - the String to check
        leadingCharacter - the leading character to be trimmed
        返回:
        the trimmed String
      • trimTrailingCharacter

        public static String trimTrailingCharacter​(String str,
                                                   char trailingCharacter)
        Trim all occurrences of the supplied trailing character from the given String.
        参数:
        str - the String to check
        trailingCharacter - the trailing character to be trimmed
        返回:
        the trimmed String
      • matchesCharacter

        public static boolean matchesCharacter​(@Nullable
                                               String str,
                                               char singleCharacter)
        Test if the given String matches the given single character.
        参数:
        str - the String to check
        singleCharacter - the character to compare to
        从以下版本开始:
        5.2.9
      • substringMatch

        public static boolean substringMatch​(CharSequence str,
                                             int index,
                                             CharSequence substring)
        Test whether the given string matches the given substring at the given index.
        参数:
        str - the original string (or StringBuilder)
        index - the index in the original string to start matching against
        substring - the substring to match at the given index
      • countOccurrencesOf

        public static int countOccurrencesOf​(String str,
                                             String sub)
        Count the occurrences of the substring sub in string str.
        参数:
        str - string to search in
        sub - string to search for
      • replace

        public static String replace​(String inString,
                                     String oldPattern,
                                     @Nullable
                                     String newPattern)
        Replace all occurrences of a substring within a string with another string.
        参数:
        inString - String to examine
        oldPattern - String to replace
        newPattern - String to insert
        返回:
        a String with the replacements
      • delete

        public static String delete​(String inString,
                                    String pattern)
        Delete all occurrences of the given substring.
        参数:
        inString - the original String
        pattern - the pattern to delete all occurrences of
        返回:
        the resulting String
      • deleteAny

        public static String deleteAny​(String inString,
                                       @Nullable
                                       String charsToDelete)
        Delete any character in a given String.
        参数:
        inString - the original String
        charsToDelete - a set of characters to delete. E.g. "az\n" will delete 'a's, 'z's and new lines.
        返回:
        the resulting String
      • quote

        @Nullable
        public static String quote​(@Nullable
                                   String str)
        Quote the given String with single quotes.
        参数:
        str - the input String (e.g. "myString")
        返回:
        the quoted String (e.g. "'myString'"), or null if the input was null
      • quoteIfString

        @Nullable
        public static Object quoteIfString​(@Nullable
                                           Object obj)
        Turn the given Object into a String with single quotes if it is a String; keeping the Object as-is else.
        参数:
        obj - the input Object (e.g. "myString")
        返回:
        the quoted String (e.g. "'myString'"), or the input object as-is if not a String
      • unqualify

        public static String unqualify​(String qualifiedName)
        Unqualify a string qualified by a '.' dot character. For example, "this.name.is.qualified", returns "qualified".
        参数:
        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.
        参数:
        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.
        参数:
        str - the String to capitalize
        返回:
        the capitalized String
      • 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.
        参数:
        str - the String to uncapitalize
        返回:
        the uncapitalized String
      • getFilename

        @Nullable
        public static String getFilename​(@Nullable
                                         String path)
        Extract the filename from the given Java resource path, e.g. "mypath/myfile.txt" -> "myfile.txt".
        参数:
        path - the file path (may be null)
        返回:
        the extracted filename, or null if none
      • getFilenameExtension

        @Nullable
        public static String getFilenameExtension​(@Nullable
                                                  String path)
        Extract the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "txt".
        参数:
        path - the file path (may be null)
        返回:
        the extracted filename extension, or null if none
      • stripFilenameExtension

        public static String stripFilenameExtension​(String path)
        Strip the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "mypath/myfile".
        参数:
        path - the file path
        返回:
        the path with stripped filename extension
      • applyRelativePath

        public static String applyRelativePath​(String path,
                                               String relativePath)
        Apply the given relative path to the given Java resource path, assuming standard Java folder separation (i.e. "/" separators).
        参数:
        path - the path to start from (usually a full file path)
        relativePath - the relative path to apply (relative to the full file path above)
        返回:
        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 slashes.

        NOTE that cleanPath should not be depended upon in a security context. Other mechanisms should be used to prevent path-traversal issues.

        参数:
        path - the original path
        返回:
        the normalized path
      • pathEquals

        public static boolean pathEquals​(String path1,
                                         String path2)
        Compare two paths after normalization of them.
        参数:
        path1 - first path for comparison
        path2 - second path for comparison
        返回:
        whether the two paths are equivalent after normalization
      • uriDecode

        public static String uriDecode​(String source,
                                       Charset charset)
        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.
        参数:
        source - the encoded String
        charset - the character set
        返回:
        the decoded value
        抛出:
        IllegalArgumentException - when the given source contains invalid encoded sequences
        从以下版本开始:
        5.0
        另请参阅:
        URLDecoder.decode(String, String)
      • parseLocaleString

        @Nullable
        public static Locale parseLocaleString​(String localeString)
        Parse the given String representation into a Locale.

        For many parsing scenarios, this is an inverse operation of Locale's toString, in a lenient sense. This method does not aim for strict Locale design compliance; it is rather specifically tailored for typical Spring parsing needs.

        Note: This delegate does not accept the BCP 47 language tag format. Please use parseLocale(java.lang.String) for lenient parsing of both formats.

        参数:
        localeString - the locale String: following Locale'stoString() format ("en", "en_UK", etc), also accepting spaces as separators (as an alternative to underscores)
        返回:
        a corresponding Locale instance, or null if none
        抛出:
        IllegalArgumentException - in case of an invalid locale specification
      • toLanguageTag

        @Deprecated
        public static String toLanguageTag​(Locale locale)
        已过时。
        as of 5.0.4, in favor of Locale.toLanguageTag()
        Determine the RFC 3066 compliant language tag, as used for the HTTP "Accept-Language" header.
        参数:
        locale - the Locale to transform to a language tag
        返回:
        the RFC 3066 compliant language tag as String
      • toStringArray

        public static String[] toStringArray​(@Nullable
                                             Collection<String> collection)
        Copy the given Collection into a String array.

        The Collection must contain String elements only.

        参数:
        collection - the Collection to copy (potentially null or empty)
        返回:
        the resulting String array
      • toStringArray

        public static String[] toStringArray​(@Nullable
                                             Enumeration<String> enumeration)
        Copy the given Enumeration into a String array.

        The Enumeration must contain String elements only.

        参数:
        enumeration - the Enumeration to copy (potentially null or empty)
        返回:
        the resulting String array
      • addStringToArray

        public static String[] addStringToArray​(@Nullable
                                                String[] array,
                                                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.
        参数:
        array - the array to append to (can be null)
        str - the String to append
        返回:
        the new array (never null)
      • concatenateStringArrays

        @Nullable
        public static String[] concatenateStringArrays​(@Nullable
                                                       String[] array1,
                                                       @Nullable
                                                       String[] array2)
        Concatenate the given String arrays into one, with overlapping array elements included twice.

        The order of elements in the original arrays is preserved.

        参数:
        array1 - the first array (can be null)
        array2 - the second array (can be null)
        返回:
        the new array (null if both given arrays were null)
      • mergeStringArrays

        @Deprecated
        @Nullable
        public static String[] mergeStringArrays​(@Nullable
                                                 String[] array1,
                                                 @Nullable
                                                 String[] array2)
        已过时。
        as of 4.3.15, in favor of manual merging via LinkedHashSet (with every entry included at most once, even entries within the first array)
        Merge the given String arrays 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).

        参数:
        array1 - the first array (can be null)
        array2 - the second array (can be null)
        返回:
        the new array (null if both given arrays were null)
      • sortStringArray

        public static String[] sortStringArray​(String[] array)
        Sort the given String array if necessary.
        参数:
        array - the original array (potentially empty)
        返回:
        the array in sorted form (never null)
      • trimArrayElements

        public static String[] trimArrayElements​(String[] array)
        Trim the elements of the given String array, calling String.trim() on each non-null element.
        参数:
        array - the original String array (potentially empty)
        返回:
        the resulting array (of the same size) with trimmed elements
      • removeDuplicateStrings

        public static String[] removeDuplicateStrings​(String[] array)
        Remove duplicate strings from the given array.

        As of 4.2, it preserves the original order, as it uses a LinkedHashSet.

        参数:
        array - the String array (potentially empty)
        返回:
        an array without duplicates, in natural sort order
      • split

        @Nullable
        public static String[] split​(@Nullable
                                     String toSplit,
                                     @Nullable
                                     String delimiter)
        Split a String at the first occurrence of the delimiter. Does not include the delimiter in the result.
        参数:
        toSplit - the string to split (potentially null or empty)
        delimiter - to split the string up with (potentially null or empty)
        返回:
        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

        @Nullable
        public static Properties splitArrayElementsIntoProperties​(String[] array,
                                                                  String delimiter)
        Take an array of 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.

        参数:
        array - the array to process
        delimiter - to split each element using (typically the equals symbol)
        返回:
        a Properties instance representing the array contents, or null if the array to process was null or empty
      • splitArrayElementsIntoProperties

        @Nullable
        public static Properties splitArrayElementsIntoProperties​(String[] array,
                                                                  String delimiter,
                                                                  @Nullable
                                                                  String charsToDelete)
        Take an array of 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.

        参数:
        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
        返回:
        a Properties instance representing the array contents, or null if the array to process was null or empty
      • commaDelimitedListToStringArray

        public static String[] commaDelimitedListToStringArray​(@Nullable
                                                               String str)
        Convert a comma delimited list (e.g., a row from a CSV file) into an array of strings.
        参数:
        str - the input String (potentially null or empty)
        返回:
        an array of strings, or the empty array in case of empty input
      • collectionToDelimitedString

        public static String collectionToDelimitedString​(@Nullable
                                                         Collection<?> coll,
                                                         String delim,
                                                         String prefix,
                                                         String suffix)
        Convert a Collection to a delimited String (e.g. CSV).

        Useful for toString() implementations.

        参数:
        coll - the Collection to convert (potentially null or empty)
        delim - the delimiter to use (typically a ",")
        prefix - the String to start each element with
        suffix - the String to end each element with
        返回:
        the delimited String
      • collectionToDelimitedString

        public static String collectionToDelimitedString​(@Nullable
                                                         Collection<?> coll,
                                                         String delim)
        Convert a Collection into a delimited String (e.g. CSV).

        Useful for toString() implementations.

        参数:
        coll - the Collection to convert (potentially null or empty)
        delim - the delimiter to use (typically a ",")
        返回:
        the delimited String
      • collectionToCommaDelimitedString

        public static String collectionToCommaDelimitedString​(@Nullable
                                                              Collection<?> coll)
        Convert a Collection into a delimited String (e.g., CSV).

        Useful for toString() implementations.

        参数:
        coll - the Collection to convert (potentially null or empty)
        返回:
        the delimited String
      • arrayToDelimitedString

        public static String arrayToDelimitedString​(@Nullable
                                                    Object[] arr,
                                                    String delim)
        Convert a String array into a delimited String (e.g. CSV).

        Useful for toString() implementations.

        参数:
        arr - the array to display (potentially null or empty)
        delim - the delimiter to use (typically a ",")
        返回:
        the delimited String
      • arrayToCommaDelimitedString

        public static String arrayToCommaDelimitedString​(@Nullable
                                                         Object[] arr)
        Convert a String array into a comma delimited String (i.e., CSV).

        Useful for toString() implementations.

        参数:
        arr - the array to display (potentially null or empty)
        返回:
        the delimited String