Class StringUtil


  • public class StringUtil
    extends Object
    Fast String Utilities. These string utilities provide both convenience methods and performance improvements over most standard library versions. The main aim of the optimizations is to avoid object creation unless absolutely required.
    • Constructor Detail

      • StringUtil

        public StringUtil()
    • Method Detail

      • normalizeCharset

        public static String normalizeCharset​(String s)
        Convert alternate charset names (eg utf8) to normalized name (eg UTF-8).
        Parameters:
        s - the charset to normalize
        Returns:
        the normalized charset (or null if normalized version not found)
      • normalizeCharset

        public static String normalizeCharset​(String s,
                                              int offset,
                                              int length)
        Convert alternate charset names (eg utf8) to normalized name (eg UTF-8).
        Parameters:
        s - the charset to normalize
        offset - the offset in the charset
        length - the length of the charset in the input param
        Returns:
        the normalized charset (or null if not found)
      • asciiToLowerCase

        public static String asciiToLowerCase​(String s)
        fast lower case conversion. Only works on ascii (not unicode)
        Parameters:
        s - the string to convert
        Returns:
        a lower case version of s
      • startsWithIgnoreCase

        public static boolean startsWithIgnoreCase​(String s,
                                                   String w)
      • endsWithIgnoreCase

        public static boolean endsWithIgnoreCase​(String s,
                                                 String w)
      • indexFrom

        public static int indexFrom​(String s,
                                    String chars)
        returns the next index of a character from the chars string
        Parameters:
        s - the input string to search
        chars - the chars to look for
        Returns:
        the index of the character in the input stream found.
      • replace

        public static String replace​(String s,
                                     String sub,
                                     String with)
        replace substrings within string.
        Parameters:
        s - the input string
        sub - the string to look for
        with - the string to replace with
        Returns:
        the now replaced string
      • unquote

        @Deprecated
        public static String unquote​(String s)
        Deprecated.
        Remove single or double quotes.
        Parameters:
        s - the input string
        Returns:
        the string with quotes removed
      • append

        public static void append​(StringBuilder buf,
                                  String s,
                                  int offset,
                                  int length)
        Append substring to StringBuilder
        Parameters:
        buf - StringBuilder to append to
        s - String to append from
        offset - The offset of the substring
        length - The length of the substring
      • append

        public static void append​(StringBuilder buf,
                                  byte b,
                                  int base)
        append hex digit
        Parameters:
        buf - the buffer to append to
        b - the byte to append
        base - the base of the hex output (almost always 16).
      • append2digits

        public static void append2digits​(StringBuffer buf,
                                         int i)
        Append 2 digits (zero padded) to the StringBuffer
        Parameters:
        buf - the buffer to append to
        i - the value to append
      • append2digits

        public static void append2digits​(StringBuilder buf,
                                         int i)
        Append 2 digits (zero padded) to the StringBuilder
        Parameters:
        buf - the buffer to append to
        i - the value to append
      • nonNull

        public static String nonNull​(String s)
        Return a non null string.
        Parameters:
        s - String
        Returns:
        The string passed in or empty string if it is null.
      • equals

        public static boolean equals​(String s,
                                     char[] buf,
                                     int offset,
                                     int length)
      • toUTF8String

        public static String toUTF8String​(byte[] b,
                                          int offset,
                                          int length)
      • toString

        public static String toString​(byte[] b,
                                      int offset,
                                      int length,
                                      String charset)
      • indexOfControlChars

        public static int indexOfControlChars​(String str)
        Find the index of a control characters in String

        This will return a result on the first occurrence of a control character, regardless if there are more than one.

        Note: uses codepoint version of Character.isISOControl(int) to support Unicode better.

           indexOfControlChars(null)      == -1
           indexOfControlChars("")        == -1
           indexOfControlChars("\r\n")    == 0
           indexOfControlChars("\t")      == 0
           indexOfControlChars("   ")     == -1
           indexOfControlChars("a")       == -1
           indexOfControlChars(".")       == -1
           indexOfControlChars(";\n")     == 1
           indexOfControlChars("abc\f")   == 3
           indexOfControlChars("z\010")   == 1
           indexOfControlChars(":") == 1
         
        Parameters:
        str - the string to test.
        Returns:
        the index of first control character in string, -1 if no control characters encountered
      • isBlank

        public static boolean isBlank​(String str)
        Test if a string is null or only has whitespace characters in it.

        Note: uses codepoint version of Character.isWhitespace(int) to support Unicode better.

           isBlank(null)   == true
           isBlank("")     == true
           isBlank("\r\n") == true
           isBlank("\t")   == true
           isBlank("   ")  == true
           isBlank("a")    == false
           isBlank(".")    == false
           isBlank(";\n")  == false
         
        Parameters:
        str - the string to test.
        Returns:
        true if string is null or only whitespace characters, false if non-whitespace characters encountered.
      • isNotBlank

        public static boolean isNotBlank​(String str)
        Test if a string is not null and contains at least 1 non-whitespace characters in it.

        Note: uses codepoint version of Character.isWhitespace(int) to support Unicode better.

           isNotBlank(null)   == false
           isNotBlank("")     == false
           isNotBlank("\r\n") == false
           isNotBlank("\t")   == false
           isNotBlank("   ")  == false
           isNotBlank("a")    == true
           isNotBlank(".")    == true
           isNotBlank(";\n")  == true
         
        Parameters:
        str - the string to test.
        Returns:
        true if string is not null and has at least 1 non-whitespace character, false if null or all-whitespace characters.
      • isUTF8

        public static boolean isUTF8​(String charset)
      • printable

        public static String printable​(String name)
      • printable

        public static String printable​(byte[] b)
      • getBytes

        public static byte[] getBytes​(String s)
      • getUtf8Bytes

        public static byte[] getUtf8Bytes​(String s)
      • getBytes

        public static byte[] getBytes​(String s,
                                      String charset)
      • sidBytesToString

        @Deprecated
        public static String sidBytesToString​(byte[] sidBytes)
        Deprecated.
        Converts a binary SID to a string SID http://en.wikipedia.org/wiki/Security_Identifier S-1-IdentifierAuthority-SubAuthority1-SubAuthority2-...-SubAuthorityn
        Parameters:
        sidBytes - the SID bytes to build from
        Returns:
        the string SID
      • sidStringToBytes

        @Deprecated
        public static byte[] sidStringToBytes​(String sidString)
        Deprecated.
        Converts a string SID to a binary SID http://en.wikipedia.org/wiki/Security_Identifier S-1-IdentifierAuthority-SubAuthority1-SubAuthority2-...-SubAuthorityn
        Parameters:
        sidString - the string SID
        Returns:
        the binary SID
      • toInt

        public static int toInt​(String string,
                                int from)
        Convert String to an integer. Parses up to the first non-numeric character. If no number is found an IllegalArgumentException is thrown
        Parameters:
        string - A String containing an integer.
        from - The index to start parsing from
        Returns:
        an int
      • toLong

        public static long toLong​(String string)
        Convert String to an long. Parses up to the first non-numeric character. If no number is found an IllegalArgumentException is thrown
        Parameters:
        string - A String containing an integer.
        Returns:
        an int
      • truncate

        public static String truncate​(String str,
                                      int maxSize)
        Truncate a string to a max size.
        Parameters:
        str - the string to possibly truncate
        maxSize - the maximum size of the string
        Returns:
        the truncated string. if str param is null, then the returned string will also be null.
      • arrayFromString

        public static String[] arrayFromString​(String s)
        Parse the string representation of a list using csvSplit(List,String,int,int)
        Parameters:
        s - The string to parse, expected to be enclosed as '[...]'
        Returns:
        An array of parsed values.
      • csvSplit

        public static String[] csvSplit​(String s,
                                        int off,
                                        int len)
        Parse a CSV string using csvSplit(List,String, int, int)
        Parameters:
        s - The string to parse
        off - The offset into the string to start parsing
        len - The len in characters to parse
        Returns:
        An array of parsed values.
      • csvSplit

        public static List<String> csvSplit​(List<String> list,
                                            String s,
                                            int off,
                                            int len)
        Split a quoted comma separated string to a list

        Handle rfc4180-like CSV strings, with the exceptions:

        • quoted values may contain double quotes escaped with back-slash
        • Non-quoted values are trimmed of leading trailing white space
        • trailing commas are ignored
        • double commas result in a empty string value
        Parameters:
        list - The Collection to split to (or null to get a new list)
        s - The string to parse
        off - The offset into the string to start parsing
        len - The len in characters to parse
        Returns:
        list containing the parsed list values
      • sanitizeXmlString

        public static String sanitizeXmlString​(String html)
      • valueOf

        public static String valueOf​(Object object)
        The String value of an Object

        This method calls String.valueOf(Object) unless the object is null, in which case null is returned

        Parameters:
        object - The object
        Returns:
        String value or null