## com.mysql.jdbc
Class StringUtils

    java.lang.Object
      com.mysql.jdbc.StringUtils

    public class StringUtils

extends java.lang.Object

Various utility methods for converting to/from byte arrays in the platform encoding

Field Summary
`(package private) static int` `WILD_COMPARE_MATCH_NO_WILD`
`(package private) static int` `WILD_COMPARE_MATCH_WITH_WILD`
`(package private) static int` `WILD_COMPARE_NO_MATCH`

Constructor Summary
`StringUtils()`

Method Summary
`static java.lang.String` `consistentToString(java.math.BigDecimal decimal)` Takes care of the fact that Sun changed the output of BigDecimal.toString() between JDK-1.4 and JDK 5
`static java.lang.String` `dumpAsHex(byte[] byteBuffer, int length)` Dumps the given bytes to STDOUT as a hex dump (up to length bytes).
`static byte[]` `escapeEasternUnicodeByteStream(byte[] origBytes, java.lang.String origString, int offset, int length)` Unfortunately, SJIS has 0x5c as a high byte in some of its double-byte characters, so we need to escape it.
`static java.lang.String` `escapeQuote(java.lang.String src, java.lang.String quotChar)`
`(package private) static java.nio.charset.Charset` `findCharset(java.lang.String alias)`
`static char` `firstAlphaCharUc(java.lang.String searchIn, int startAt)`
`static char` `firstNonWsCharUc(java.lang.String searchIn)` Returns the first non whitespace char, converted to upper case
`static char` `firstNonWsCharUc(java.lang.String searchIn, int startAt)`
`static java.lang.String` `fixDecimalExponent(java.lang.String dString)` Adds '+' to decimal numbers that are positive (MySQL doesn't understand them otherwise
`static byte[]` `getBytes(char[] c, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)`
`static byte[]` `getBytes(char[] c, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, int offset, int length, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)`
`static byte[]` `getBytes(char[] c, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, MySQLConnection conn, ExceptionInterceptor exceptionInterceptor)`
`static byte[]` `getBytes(java.lang.String value)`
`static byte[]` `getBytes(java.lang.String s, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)` Returns the byte[] representation of the given string (re)using the given charset converter, and the given encoding.
`static byte[]` `getBytes(java.lang.String s, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, int offset, int length, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)` DOCUMENT ME!
`static byte[]` `getBytes(java.lang.String value, java.lang.String encoding)`
`static byte[]` `getBytes(java.lang.String s, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, MySQLConnection conn, ExceptionInterceptor exceptionInterceptor)` Returns the byte[] representation of the given string using given encoding.
`static byte[]` `getBytesWrapped(java.lang.String s, char beginWrap, char endWrap, SingleByteCharsetConverter converter, java.lang.String encoding, java.lang.String serverEncoding, boolean parserKnowsUnicode, ExceptionInterceptor exceptionInterceptor)`
`static int` `getInt(byte[] buf)`
`static int` `getInt(byte[] buf, int offset, int endPos)`
`static long` `getLong(byte[] buf)`
`static long` `getLong(byte[] buf, int offset, int endpos)`
`static short` `getShort(byte[] buf)`
`static int` `indexOf(byte[] s, char c)`
`static int` `indexOfIgnoreCase(int startingPosition, java.lang.String searchIn, java.lang.String searchFor)`
`static int` `indexOfIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)` DOCUMENT ME!
`static int` `indexOfIgnoreCaseRespectMarker(int startAt, java.lang.String src, java.lang.String target, java.lang.String marker, java.lang.String markerCloses, boolean allowBackslashEscapes)`
`static int` `indexOfIgnoreCaseRespectQuotes(int startAt, java.lang.String src, java.lang.String target, char quoteChar, boolean allowBackslashEscapes)`
`static boolean` `isEmptyOrWhitespaceOnly(java.lang.String str)`
`static boolean` `isNullOrEmpty(java.lang.String toTest)`
`static boolean` `isValidIdChar(char c)`
`static int` `lastIndexOf(byte[] s, char c)`
`(package private) static byte[]` `s2b(java.lang.String s, MySQLConnection conn)`
`static java.lang.String` `sanitizeProcOrFuncName(java.lang.String src)` Next two functions are to help DBMD check if the given string is in form of database.name and return it as "database";"name" with comments removed.
`static java.util.List<java.lang.String>` `split(java.lang.String stringToSplit, java.lang.String delimitter, boolean trim)` Splits stringToSplit into a list, using the given delimitter
`static java.util.List<java.lang.String>` `split(java.lang.String stringToSplit, java.lang.String delimiter, java.lang.String markers, java.lang.String markerCloses, boolean trim)` Splits stringToSplit into a list, using the given delimitter
`static java.util.List<java.lang.String>` `splitDBdotName(java.lang.String src, java.lang.String cat, java.lang.String quotId, boolean isNoBslashEscSet)` Next we check if there is anything to split.
`static boolean` `startsWithIgnoreCase(java.lang.String searchIn, int startAt, java.lang.String searchFor)` Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a String.regionMatch(...)
`static boolean` `startsWithIgnoreCase(java.lang.String searchIn, java.lang.String searchFor)` Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case.
`static boolean` `startsWithIgnoreCaseAndNonAlphaNumeric(java.lang.String searchIn, java.lang.String searchFor)` Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case,leading whitespace and non-alphanumeric characters.
`static boolean` `startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String searchFor)` Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace
`static boolean` `startsWithIgnoreCaseAndWs(java.lang.String searchIn, java.lang.String searchFor, int beginPos)` Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace
`static java.lang.String` `stripComments(java.lang.String src, java.lang.String stringOpens, java.lang.String stringCloses, boolean slashStarComments, boolean slashSlashComments, boolean hashComments, boolean dashDashComments)` Returns the given string, with comments removed
`static byte[]` `stripEnclosure(byte[] source, java.lang.String prefix, java.lang.String suffix)`
`static java.lang.String` `toAsciiString(byte[] buffer)` Returns the bytes as an ASCII String.
`static java.lang.String` `toAsciiString(byte[] buffer, int startPos, int length)` Returns the bytes as an ASCII String.
`static java.lang.String` `toString(byte[] value)`
`static java.lang.String` `toString(byte[] value, int offset, int length)`
`static java.lang.String` `toString(byte[] value, int offset, int length, java.lang.String encoding)`
`static java.lang.String` `toString(byte[] value, java.lang.String encoding)`
`static int` `wildCompare(java.lang.String searchIn, java.lang.String searchForWildcard)` Compares searchIn against searchForWildcard with wildcards (heavily borrowed from strings/ctype-simple.c in the server sources)

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### WILD_COMPARE_MATCH_NO_WILD

    static final int WILD_COMPARE_MATCH_NO_WILD

See Also:
  Constant Field Values

### WILD_COMPARE_MATCH_WITH_WILD

    static final int WILD_COMPARE_MATCH_WITH_WILD

See Also:
  Constant Field Values

### WILD_COMPARE_NO_MATCH

    static final int WILD_COMPARE_NO_MATCH

See Also:
  Constant Field Values

Constructor Detail

### StringUtils

    public StringUtils()

Method Detail

### findCharset

    static java.nio.charset.Charset findCharset(java.lang.String alias)
                                         throws java.io.UnsupportedEncodingException

  Throws:
    `java.io.UnsupportedEncodingException`

### consistentToString

    public static java.lang.String consistentToString(java.math.BigDecimal decimal)

  Takes care of the fact that Sun changed the output of BigDecimal.toString() between JDK-1.4 and JDK 5

  Parameters:
    `decimal` - the big decimal to stringify
  Returns:
    a string representation of 'decimal'

### dumpAsHex

    public static final java.lang.String dumpAsHex(byte[] byteBuffer,
                                                   int length)

  Dumps the given bytes to STDOUT as a hex dump (up to length bytes).

  Parameters:
    `byteBuffer` - the data to print as hex
    `length` - the number of bytes to print
  Returns:
    ...

### escapeEasternUnicodeByteStream

    public static byte[] escapeEasternUnicodeByteStream(byte[] origBytes,
                                                        java.lang.String origString,
                                                        int offset,
                                                        int length)

  Unfortunately, SJIS has 0x5c as a high byte in some of its double-byte characters, so we need to escape it.

  Parameters:
    `origBytes` - the original bytes in SJIS format
    `origString` - the string that had .getBytes() called on it
    `offset` - where to start converting from
    `length` - how many characters to convert.
  Returns:
    byte[] with 0x5c escaped

### firstNonWsCharUc

    public static char firstNonWsCharUc(java.lang.String searchIn)

  Returns the first non whitespace char, converted to upper case

  Parameters:
    `searchIn` - the string to search in
  Returns:
    the first non-whitespace character, upper cased.

### firstNonWsCharUc

    public static char firstNonWsCharUc(java.lang.String searchIn,
                                        int startAt)

### firstAlphaCharUc

    public static char firstAlphaCharUc(java.lang.String searchIn,
                                        int startAt)

### fixDecimalExponent

    public static final java.lang.String fixDecimalExponent(java.lang.String dString)

  Adds '+' to decimal numbers that are positive (MySQL doesn't understand them otherwise

  Parameters:
    `dString` - The value as a string
  Returns:
    String the string with a '+' added (if needed)

### getBytes

    public static final byte[] getBytes(char[] c,
                                        SingleByteCharsetConverter converter,
                                        java.lang.String encoding,
                                        java.lang.String serverEncoding,
                                        boolean parserKnowsUnicode,
                                        ExceptionInterceptor exceptionInterceptor)
                                 throws java.sql.SQLException

  Throws:
    `java.sql.SQLException`

### getBytes

    public static final byte[] getBytes(char[] c,
                                        SingleByteCharsetConverter converter,
                                        java.lang.String encoding,
                                        java.lang.String serverEncoding,
                                        int offset,
                                        int length,
                                        boolean parserKnowsUnicode,
                                        ExceptionInterceptor exceptionInterceptor)
                                 throws java.sql.SQLException

  Throws:
    `java.sql.SQLException`

### getBytes

    public static final byte[] getBytes(char[] c,
                                        java.lang.String encoding,
                                        java.lang.String serverEncoding,
                                        boolean parserKnowsUnicode,
                                        MySQLConnection conn,
                                        ExceptionInterceptor exceptionInterceptor)
                                 throws java.sql.SQLException

  Throws:
    `java.sql.SQLException`

### getBytes

    public static final byte[] getBytes(java.lang.String s,
                                        SingleByteCharsetConverter converter,
                                        java.lang.String encoding,
                                        java.lang.String serverEncoding,
                                        boolean parserKnowsUnicode,
                                        ExceptionInterceptor exceptionInterceptor)
                                 throws java.sql.SQLException

  Returns the byte[] representation of the given string (re)using the given charset converter, and the given encoding.

  Parameters:
    `s` - the string to convert
    `converter` - the converter to reuse
    `encoding` - the character encoding to use
    `serverEncoding` - DOCUMENT ME!
    `parserKnowsUnicode` - DOCUMENT ME!
  Returns:
    byte[] representation of the string
  Throws:
    `java.sql.SQLException` - if an encoding unsupported by the JVM is supplied.

### getBytesWrapped

    public static final byte[] getBytesWrapped(java.lang.String s,
                                               char beginWrap,
                                               char endWrap,
                                               SingleByteCharsetConverter converter,
                                               java.lang.String encoding,
                                               java.lang.String serverEncoding,
                                               boolean parserKnowsUnicode,
                                               ExceptionInterceptor exceptionInterceptor)
                                        throws java.sql.SQLException

  Throws:
    `java.sql.SQLException`

### getBytes

    public static final byte[] getBytes(java.lang.String s,
                                        SingleByteCharsetConverter converter,
                                        java.lang.String encoding,
                                        java.lang.String serverEncoding,
                                        int offset,
                                        int length,
                                        boolean parserKnowsUnicode,
                                        ExceptionInterceptor exceptionInterceptor)
                                 throws java.sql.SQLException

  DOCUMENT ME!

  Parameters:
    `s` - DOCUMENT ME!
    `converter` - DOCUMENT ME!
    `encoding` - DOCUMENT ME!
    `serverEncoding` - DOCUMENT ME!
    `offset` - DOCUMENT ME!
    `length` - DOCUMENT ME!
    `parserKnowsUnicode` - DOCUMENT ME!
  Returns:
    DOCUMENT ME!
  Throws:
    `java.sql.SQLException` - DOCUMENT ME!

### getBytes

    public static final byte[] getBytes(java.lang.String s,
                                        java.lang.String encoding,
                                        java.lang.String serverEncoding,
                                        boolean parserKnowsUnicode,
                                        MySQLConnection conn,
                                        ExceptionInterceptor exceptionInterceptor)
                                 throws java.sql.SQLException

  Returns the byte[] representation of the given string using given encoding.

  Parameters:
    `s` - the string to convert
    `encoding` - the character encoding to use
    `parserKnowsUnicode` - DOCUMENT ME!
  Returns:
    byte[] representation of the string
  Throws:
    `java.sql.SQLException` - if an encoding unsupported by the JVM is supplied.

### getInt

    public static int getInt(byte[] buf,
                             int offset,
                             int endPos)
                      throws java.lang.NumberFormatException

  Throws:
    `java.lang.NumberFormatException`

### getInt

    public static int getInt(byte[] buf)
                      throws java.lang.NumberFormatException

  Throws:
    `java.lang.NumberFormatException`

### getLong

    public static long getLong(byte[] buf)
                        throws java.lang.NumberFormatException

  Throws:
    `java.lang.NumberFormatException`

### getLong

    public static long getLong(byte[] buf,
                               int offset,
                               int endpos)
                        throws java.lang.NumberFormatException

  Throws:
    `java.lang.NumberFormatException`

### getShort

    public static short getShort(byte[] buf)
                          throws java.lang.NumberFormatException

  Throws:
    `java.lang.NumberFormatException`

### indexOfIgnoreCase

    public static final int indexOfIgnoreCase(int startingPosition,
                                              java.lang.String searchIn,
                                              java.lang.String searchFor)

### indexOfIgnoreCase

    public static final int indexOfIgnoreCase(java.lang.String searchIn,
                                              java.lang.String searchFor)

  DOCUMENT ME!

  Parameters:
    `searchIn` - DOCUMENT ME!
    `searchFor` - DOCUMENT ME!
  Returns:
    DOCUMENT ME!

### indexOfIgnoreCaseRespectMarker

    public static int indexOfIgnoreCaseRespectMarker(int startAt,
                                                     java.lang.String src,
                                                     java.lang.String target,
                                                     java.lang.String marker,
                                                     java.lang.String markerCloses,
                                                     boolean allowBackslashEscapes)

### indexOfIgnoreCaseRespectQuotes

    public static int indexOfIgnoreCaseRespectQuotes(int startAt,
                                                     java.lang.String src,
                                                     java.lang.String target,
                                                     char quoteChar,
                                                     boolean allowBackslashEscapes)

### split

    public static final java.util.List<java.lang.String> split(java.lang.String stringToSplit,
                                                               java.lang.String delimitter,
                                                               boolean trim)

  Splits stringToSplit into a list, using the given delimitter

  Parameters:
    `stringToSplit` - the string to split
    `delimitter` - the string to split on
    `trim` - should the split strings be whitespace trimmed?
  Returns:
    the list of strings, split by delimitter
  Throws:
    `java.lang.IllegalArgumentException` - DOCUMENT ME!

### split

    public static final java.util.List<java.lang.String> split(java.lang.String stringToSplit,
                                                               java.lang.String delimiter,
                                                               java.lang.String markers,
                                                               java.lang.String markerCloses,
                                                               boolean trim)

  Splits stringToSplit into a list, using the given delimitter

  Parameters:
    `stringToSplit` - the string to split
    `delimitter` - the string to split on
    `trim` - should the split strings be whitespace trimmed?
  Returns:
    the list of strings, split by delimiter
  Throws:
    `java.lang.IllegalArgumentException` - DOCUMENT ME!

### startsWithIgnoreCase

    public static boolean startsWithIgnoreCase(java.lang.String searchIn,
                                               int startAt,
                                               java.lang.String searchFor)

  Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a String.regionMatch(...)

  Parameters:
    `searchIn` - the string to search in
    `startAt` - the position to start at
    `searchFor` - the string to search for
  Returns:
    whether searchIn starts with searchFor, ignoring case

### startsWithIgnoreCase

    public static boolean startsWithIgnoreCase(java.lang.String searchIn,
                                               java.lang.String searchFor)

  Determines whether or not the string 'searchIn' contains the string 'searchFor', dis-regarding case. Shorthand for a String.regionMatch(...)

  Parameters:
    `searchIn` - the string to search in
    `searchFor` - the string to search for
  Returns:
    whether searchIn starts with searchFor, ignoring case

### startsWithIgnoreCaseAndNonAlphaNumeric

    public static boolean startsWithIgnoreCaseAndNonAlphaNumeric(java.lang.String searchIn,
                                                                 java.lang.String searchFor)

  Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case,leading whitespace and non-alphanumeric characters.

  Parameters:
    `searchIn` - the string to search in
    `searchFor` - the string to search for
  Returns:
    true if the string starts with 'searchFor' ignoring whitespace

### startsWithIgnoreCaseAndWs

    public static boolean startsWithIgnoreCaseAndWs(java.lang.String searchIn,
                                                    java.lang.String searchFor)

  Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace

  Parameters:
    `searchIn` - the string to search in
    `searchFor` - the string to search for
  Returns:
    true if the string starts with 'searchFor' ignoring whitespace

### startsWithIgnoreCaseAndWs

    public static boolean startsWithIgnoreCaseAndWs(java.lang.String searchIn,
                                                    java.lang.String searchFor,
                                                    int beginPos)

  Determines whether or not the sting 'searchIn' contains the string 'searchFor', disregarding case and leading whitespace

  Parameters:
    `searchIn` - the string to search in
    `searchFor` - the string to search for
    `beginPos` - where to start searching
  Returns:
    true if the string starts with 'searchFor' ignoring whitespace

### stripEnclosure

    public static byte[] stripEnclosure(byte[] source,
                                        java.lang.String prefix,
                                        java.lang.String suffix)

  Parameters:
    `bytesToStrip` -
    `prefix` -
    `suffix` -
  Returns:

### toAsciiString

    public static final java.lang.String toAsciiString(byte[] buffer)

  Returns the bytes as an ASCII String.

  Parameters:
    `buffer` - the bytes representing the string
  Returns:
    The ASCII String.

### toAsciiString

    public static final java.lang.String toAsciiString(byte[] buffer,
                                                       int startPos,
                                                       int length)

  Returns the bytes as an ASCII String.

  Parameters:
    `buffer` - the bytes to convert
    `startPos` - the position to start converting
    `length` - the length of the string to convert
  Returns:
    the ASCII string

### wildCompare

    public static int wildCompare(java.lang.String searchIn,
                                  java.lang.String searchForWildcard)

  Compares searchIn against searchForWildcard with wildcards (heavily borrowed from strings/ctype-simple.c in the server sources)

  Parameters:
    `searchIn` - the string to search in
    `searchForWildcard` - the string to search for, using the 'standard' SQL wildcard chars of '%' and '_'
  Returns:
    WILD_COMPARE_MATCH_NO_WILD if matched, WILD_COMPARE_NO_MATCH if not matched with wildcard, WILD_COMPARE_MATCH_WITH_WILD if matched with wildcard

### s2b

    static byte[] s2b(java.lang.String s,
                      MySQLConnection conn)
               throws java.sql.SQLException

  Throws:
    `java.sql.SQLException`

### lastIndexOf

    public static int lastIndexOf(byte[] s,
                                  char c)

### indexOf

    public static int indexOf(byte[] s,
                              char c)

### isNullOrEmpty

    public static boolean isNullOrEmpty(java.lang.String toTest)

### stripComments

    public static java.lang.String stripComments(java.lang.String src,
                                                 java.lang.String stringOpens,
                                                 java.lang.String stringCloses,
                                                 boolean slashStarComments,
                                                 boolean slashSlashComments,
                                                 boolean hashComments,
                                                 boolean dashDashComments)

  Returns the given string, with comments removed

  Parameters:
    `src` - the source string
    `stringOpens` - characters which delimit the "open" of a string
    `stringCloses` - characters which delimit the "close" of a string, in counterpart order to `stringOpens`
    `slashStarComments` - strip slash-star type "C" style comments
    `slashSlashComments` - strip slash-slash C++ style comments to end-of-line
    `hashComments` - strip #-style comments to end-of-line
    `dashDashComments` - strip "--" style comments to end-of-line
  Returns:
    the input string with all comment-delimited data removed

### sanitizeProcOrFuncName

    public static java.lang.String sanitizeProcOrFuncName(java.lang.String src)

  Next two functions are to help DBMD check if the given string is in form of database.name and return it as "database";"name" with comments removed. If string is NULL or wildcard (%), returns null and exits. First, we sanitize...

  Parameters:
    `src` - the source string
  Returns:
    the input string with all comment-delimited data removed

### splitDBdotName

    public static java.util.List<java.lang.String> splitDBdotName(java.lang.String src,
                                                                  java.lang.String cat,
                                                                  java.lang.String quotId,
                                                                  boolean isNoBslashEscSet)

  Next we check if there is anything to split. If so we return result in form of "database";"name" If string is NULL or wildcard (%), returns null and exits.

  Parameters:
    `src` - the source string
    `cat` - Catalog, if available
    `quotId` - quoteId as defined on server
    `isNoBslashEscSet` - Is our connection in BackSlashEscape mode
  Returns:
    the input string with all comment-delimited data removed

### isEmptyOrWhitespaceOnly

    public static final boolean isEmptyOrWhitespaceOnly(java.lang.String str)

### escapeQuote

    public static java.lang.String escapeQuote(java.lang.String src,
                                               java.lang.String quotChar)

### toString

    public static java.lang.String toString(byte[] value,
                                            int offset,
                                            int length,
                                            java.lang.String encoding)
                                     throws java.io.UnsupportedEncodingException

  Throws:
    `java.io.UnsupportedEncodingException`

### toString

    public static java.lang.String toString(byte[] value,
                                            java.lang.String encoding)
                                     throws java.io.UnsupportedEncodingException

  Throws:
    `java.io.UnsupportedEncodingException`

### toString

    public static java.lang.String toString(byte[] value,
                                            int offset,
                                            int length)

### toString

    public static java.lang.String toString(byte[] value)

### getBytes

    public static byte[] getBytes(java.lang.String value,
                                  java.lang.String encoding)
                           throws java.io.UnsupportedEncodingException

  Throws:
    `java.io.UnsupportedEncodingException`

### getBytes

    public static byte[] getBytes(java.lang.String value)

### isValidIdChar

    public static final boolean isValidIdChar(char c)