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

Fields
`(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

Constructors
Constructor and Description
`StringUtils()`

### Method Summary

Methods
`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)