Package org.h2.util

# Class StringUtils

java.lang.Object
org.h2.util.StringUtils

public class StringUtils extends Object
A few String-related utility functions.

## Method Summary

Modifier and Type
Method
Description
`static String`
`addAsterisk(String s, int index)`
Add an asterisk ('[*]') at the given position.
`static StringBuilder`
`appendHex(StringBuilder builder, long x, int bytes)`
Appends specified number of trailing bytes from unsigned long value to a specified string builder.
`static StringBuilder`
`appendToLength(StringBuilder builder, String s, int length)`
Appends the specified string or its part to the specified builder with maximum builder length limit.
`static StringBuilder`
`appendTwoDigits(StringBuilder builder, int positiveValue)`
Append a zero-padded number from 00 to 99 to a string builder.
`static StringBuilder`
`appendZeroPadded(StringBuilder builder, int length, int positiveValue)`
Append a zero-padded number to a string builder.
`static String`
`arrayCombine(String[] list, char separatorChar)`
Combine an array of strings to one array using the given separator character.
`static String[]`
`arraySplit(String s, char separatorChar, boolean trim)`
Split a string into an array of strings using the given separator.
`static String`
`cache(String s)`
Get the string from the cache if possible.
`static void`
`clearCache()`
Clear the cache.
`static char[]`
`cloneCharArray(char[] chars)`
Create a new char array and copy all the data.
`static String`
`convertBytesToHex(byte[] value)`
Convert a byte array to a hex encoded string.
`static String`
`convertBytesToHex(byte[] value, int len)`
Convert a byte array to a hex encoded string.
`static StringBuilder`
`convertBytesToHex(StringBuilder builder, byte[] value)`
Convert a byte array to a hex encoded string and appends it to a specified string builder.
`static StringBuilder`
`convertBytesToHex(StringBuilder builder, byte[] value, int len)`
Convert a byte array to a hex encoded string and appends it to a specified string builder.
`static byte[]`
`convertHexToBytes(String s)`
Convert a hex encoded string to a byte array.
`static ByteArrayOutputStream`
`convertHexWithSpacesToBytes(ByteArrayOutputStream baos, String s, int start, int end)`
Parses a hex encoded string with possible space separators and appends the decoded binary string to the specified output stream.
`static String`
`decodeUnicodeStringSQL(String s, int uencode)`
Decodes a Unicode SQL string.
`static String`
`escapeMetaDataPattern(String pattern)`
Escape table or schema patterns used for DatabaseMetaData functions.
`static StringBuilder`
`indent(StringBuilder builder, String s, int spaces, boolean newline)`
Indents a string with spaces and appends it to a specified builder.
`static boolean`
`isNullOrEmpty(String s)`
Check if a String is null or empty (the length is null).
`static boolean`
`isNumber(String s)`
Check if this string is a decimal number.
`static boolean`
`isWhitespaceOrEmpty(String s)`
Check if the specified string is empty or contains only whitespace.
`static String`
`javaDecode(String s)`
Decode a text that is encoded as a Java string literal.
`static String`
`javaEncode(String s)`
Convert a string to a Java literal using the correct escape sequences.
`static void`
`javaEncode(String s, StringBuilder buff, boolean forSQL)`
Convert a string to a Java literal using the correct escape sequences.
`static String`
`pad(String string, int n, String padding, boolean right)`
Pad a string.
`static int`
`parseUInt31(String s, int start, int end)`
Parses an unsigned 31-bit integer.
`static String`
`quoteIdentifier(String s)`
Enclose a string with double quotes.
`static StringBuilder`
`quoteIdentifier(StringBuilder builder, String s)`
Enclose a string with double quotes and append it to the specified string builder.
`static String`
`quoteJavaIntArray(int[] array)`
Convert an int array to the Java source code that represents this array.
`static String`
`quoteJavaString(String s)`
Convert a string to the Java literal and enclose it with double quotes.
`static String`
`quoteJavaStringArray(String[] array)`
Convert a string array to the Java source code that represents this array.
`static String`
`quoteStringSQL(String s)`
Convert a string to a SQL literal.
`static StringBuilder`
`quoteStringSQL(StringBuilder builder, String s)`
Convert a string to a SQL character string literal.
`static String`
`replaceAll(String s, String before, String after)`
Replace all occurrences of the before string with the after string.
`static boolean`
`startsWith(String text, String prefix)`
Case-sensitive check if a starts with a .
`static boolean`
`startsWithIgnoringCase(String text, String prefix)`
Case-Insensitive check if a starts with a .
`static String`
`toLowerEnglish(String s)`
Convert a string to lowercase using the English locale.
`static String`
`toUpperEnglish(String s)`
Convert a string to uppercase using the English locale.
`static String`
`trim(String s, boolean leading, boolean trailing, char character)`
Trim a character from a string.
`static String`
`trim(String s, boolean leading, boolean trailing, String characters)`
Trim a character from a string.
`static StringBuilder`
`trimSubstring(StringBuilder builder, String s, int beginIndex, int endIndex)`
Trim a whitespace from a substring and append it to a specified string builder.
`static String`
`trimSubstring(String s, int beginIndex)`
Trim a whitespace from a substring.
`static String`
`trimSubstring(String s, int beginIndex, int endIndex)`
Trim a whitespace from a substring.
`static String`
`truncateString(String s, int maximumLength)`
Truncates the specified string to the specified length.
`static String`
`urlDecode(String encoded)`
Decode the URL to a string.
`static String`
`urlEncode(String s)`
Encode the string as a URL.
`static String`
`xmlAttr(String name, String value)`
Creates an XML attribute of the form name="value".
`static String`
`xmlCData(String data)`
Converts the data to a CDATA element.
`static String`
`xmlComment(String data)`
Escapes a comment.
`static String`
`xmlNode(String name, String attributes, String content)`
Create an XML node with optional attributes and content.
`static String`
`xmlNode(String name, String attributes, String content, boolean indent)`
Create an XML node with optional attributes and content.
`static String`
`xmlStartDoc()`
Returns <?xml version="1.0"?>
`static String`
`xmlText(String text)`
Escapes an XML text element.
`static String`
`xmlText(String text, boolean escapeNewline)`
Escapes an XML text element.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### toUpperEnglish

public static String toUpperEnglish(String s)
Convert a string to uppercase using the English locale.

Parameters:
  `s` - the test to convert
Returns:
  the uppercase text

### toLowerEnglish

public static String toLowerEnglish(String s)
Convert a string to lowercase using the English locale.

Parameters:
  `s` - the text to convert
Returns:
  the lowercase text

### quoteStringSQL

public static String quoteStringSQL(String s)
Convert a string to a SQL literal. Null is converted to NULL. The text is enclosed in single quotes. If there are any special characters, the Unicode character string literal is used.

Parameters:
  `s` - the text to convert.
Returns:
  the SQL literal

### quoteStringSQL

public static StringBuilder quoteStringSQL(StringBuilder builder, String s)
Convert a string to a SQL character string literal. Null is converted to NULL. If there are any special characters, the Unicode character string literal is used.

Parameters:
  `builder` - string builder to append result to
  `s` - the text to convert
Returns:
  the specified string builder

### decodeUnicodeStringSQL

public static String decodeUnicodeStringSQL(String s, int uencode)
Decodes a Unicode SQL string.

Parameters:
  `s` - the string to decode
  `uencode` - the code point of UENCODE character, or '\\'
Returns:
  the decoded string
Throws:
  `DbException` - on format exception

### javaEncode

public static String javaEncode(String s)
Convert a string to a Java literal using the correct escape sequences. The literal is not enclosed in double quotes. The result can be used in properties files or in Java source code.

Parameters:
  `s` - the text to convert
Returns:
  the Java representation

### javaEncode

public static void javaEncode(String s, StringBuilder buff, boolean forSQL)
Convert a string to a Java literal using the correct escape sequences. The literal is not enclosed in double quotes. The result can be used in properties files or in Java source code.

Parameters:
  `s` - the text to convert
  `buff` - the Java representation to return
  `forSQL` - true if we embed this inside a STRINGDECODE SQL command

### addAsterisk

public static String addAsterisk(String s, int index)
Add an asterisk ('[*]') at the given position. This format is used to show where parsing failed in a statement.

Parameters:
  `s` - the text
  `index` - the position
Returns:
  the text with asterisk

### javaDecode

public static String javaDecode(String s)
Decode a text that is encoded as a Java string literal. The Java properties file format and Java source code format is supported.

Parameters:
  `s` - the encoded string
Returns:
  the string

### quoteJavaString

public static String quoteJavaString(String s)
Convert a string to the Java literal and enclose it with double quotes. Null will result in "null" (without double quotes).

Parameters:
  `s` - the text to convert
Returns:
  the Java representation

### quoteJavaStringArray

public static String quoteJavaStringArray(String[] array)
Convert a string array to the Java source code that represents this array. Null will be converted to 'null'.

Parameters:
  `array` - the string array
Returns:
  the Java source code (including new String[]{})

### quoteJavaIntArray

public static String quoteJavaIntArray(int[] array)
Convert an int array to the Java source code that represents this array. Null will be converted to 'null'.

Parameters:
  `array` - the int array
Returns:
  the Java source code (including new int[]{})

### urlEncode

public static String urlEncode(String s)
Encode the string as a URL.

Parameters:
  `s` - the string to encode
Returns:
  the encoded string

### urlDecode

public static String urlDecode(String encoded)
Decode the URL to a string.

Parameters:
  `encoded` - the encoded URL
Returns:
  the decoded string

### arraySplit

public static String[] arraySplit(String s, char separatorChar, boolean trim)
Split a string into an array of strings using the given separator. A null string will result in a null array, and an empty string in a zero element array.

Parameters:
  `s` - the string to split
  `separatorChar` - the separator character
  `trim` - whether each element should be trimmed
Returns:
  the array list

### arrayCombine

public static String arrayCombine(String[] list, char separatorChar)
Combine an array of strings to one array using the given separator character. A backslash and the separator character and escaped using a backslash.

Parameters:
  `list` - the string array
  `separatorChar` - the separator character
Returns:
  the combined string

### xmlAttr

public static String xmlAttr(String name, String value)
Creates an XML attribute of the form name="value". A single space is prepended to the name, so that multiple attributes can be concatenated.

Parameters:
  `name` - the attribute name
  `value` - the attribute value
Returns:
  the attribute

### xmlNode

public static String xmlNode(String name, String attributes, String content)
Create an XML node with optional attributes and content. The data is indented with 4 spaces if it contains a newline character.

Parameters:
  `name` - the element name
  `attributes` - the attributes (might be null)
  `content` - the content (might be null)
Returns:
  the node

### xmlNode

public static String xmlNode(String name, String attributes, String content, boolean indent)
Create an XML node with optional attributes and content. The data is indented with 4 spaces if it contains a newline character and the indent parameter is set to true.

Parameters:
  `name` - the element name
  `attributes` - the attributes (might be null)
  `content` - the content (might be null)
  `indent` - whether to indent the content if it contains a newline
Returns:
  the node

### indent

public static StringBuilder indent(StringBuilder builder, String s, int spaces, boolean newline)
Indents a string with spaces and appends it to a specified builder.

Parameters:
  `builder` - string builder to append to
  `s` - the string
  `spaces` - the number of spaces
  `newline` - append a newline if there is none
Returns:
  the specified string builder

### xmlComment

public static String xmlComment(String data)
Escapes a comment. If the data contains '--', it is converted to '- -'. The data is indented with 4 spaces if it contains a newline character.

Parameters:
  `data` - the comment text
Returns:
  <!-- data -->

### xmlCData

public static String xmlCData(String data)
Converts the data to a CDATA element. If the data contains ']]>', it is escaped as a text element.

Parameters:
  `data` - the text data
Returns:
  <![CDATA[data]]>

### xmlStartDoc

public static String xmlStartDoc()
Returns <?xml version="1.0"?>

Returns:
  <?xml version="1.0"?>

### xmlText

public static String xmlText(String text)
Escapes an XML text element.

Parameters:
  `text` - the text data
Returns:
  the escaped text

### xmlText

public static String xmlText(String text, boolean escapeNewline)
Escapes an XML text element.

Parameters:
  `text` - the text data
  `escapeNewline` - whether to escape newlines
Returns:
  the escaped text

### replaceAll

public static String replaceAll(String s, String before, String after)
Replace all occurrences of the before string with the after string. Unlike `String.replaceAll(String, String)` this method reads `before` and `after` arguments as plain strings and if `before` argument is an empty string this method returns original string `s`.

Parameters:
  `s` - the string
  `before` - the old text
  `after` - the new text
Returns:
  the string with the before string replaced

### quoteIdentifier

public static String quoteIdentifier(String s)
Enclose a string with double quotes. A double quote inside the string is escaped using a double quote.

Parameters:
  `s` - the text
Returns:
  the double-quoted text

### quoteIdentifier

public static StringBuilder quoteIdentifier(StringBuilder builder, String s)
Enclose a string with double quotes and append it to the specified string builder. A double quote inside the string is escaped using a double quote.

Parameters:
  `builder` - string builder to append to
  `s` - the text
Returns:
  the specified builder

### isNullOrEmpty

public static boolean isNullOrEmpty(String s)
Check if a String is null or empty (the length is null).

Parameters:
  `s` - the string to check
Returns:
  true if it is null or empty

### pad

public static String pad(String string, int n, String padding, boolean right)
Pad a string. This method is used for the SQL function RPAD and LPAD.

Parameters:
  `string` - the original string
  `n` - the target length
  `padding` - the padding string
  `right` - true if the padding should be appended at the end
Returns:
  the padded string

### cloneCharArray

public static char[] cloneCharArray(char[] chars)
Create a new char array and copy all the data. If the size of the byte array is zero, the same array is returned.

Parameters:
  `chars` - the char array (might be null)
Returns:
  a new char array

### trim

public static String trim(String s, boolean leading, boolean trailing, String characters)
Trim a character from a string.

Parameters:
  `s` - the string
  `leading` - if leading characters should be removed
  `trailing` - if trailing characters should be removed
  `characters` - what to remove or `null` for a space
Returns:
  the trimmed string

### trim

public static String trim(String s, boolean leading, boolean trailing, char character)
Trim a character from a string.

Parameters:
  `s` - the string
  `leading` - if leading characters should be removed
  `trailing` - if trailing characters should be removed
  `character` - what to remove
Returns:
  the trimmed string

### trimSubstring

public static String trimSubstring(String s, int beginIndex)
Trim a whitespace from a substring. Equivalent of `substring(beginIndex).trim()`.

Parameters:
  `s` - the string
  `beginIndex` - start index of substring (inclusive)
Returns:
  trimmed substring

### trimSubstring

public static String trimSubstring(String s, int beginIndex, int endIndex)
Trim a whitespace from a substring. Equivalent of `substring(beginIndex, endIndex).trim()`.

Parameters:
  `s` - the string
  `beginIndex` - start index of substring (inclusive)
  `endIndex` - end index of substring (exclusive)
Returns:
  trimmed substring

### trimSubstring

public static StringBuilder trimSubstring(StringBuilder builder, String s, int beginIndex, int endIndex)
Trim a whitespace from a substring and append it to a specified string builder. Equivalent of `builder.append(substring(beginIndex, endIndex).trim())`.

Parameters:
  `builder` - string builder to append to
  `s` - the string
  `beginIndex` - start index of substring (inclusive)
  `endIndex` - end index of substring (exclusive)
Returns:
  the specified builder

### truncateString

public static String truncateString(String s, int maximumLength)
Truncates the specified string to the specified length. This method, unlike `String.substring(int, int)`, doesn't break Unicode code points. If the specified length in characters breaks a valid pair of surrogates, the whole pair is not included into result.

Parameters:
  `s` - the string to truncate
  `maximumLength` - the maximum length in characters
Returns:
  the specified string if it isn't longer than the specified maximum length, and the truncated string otherwise

### cache

public static String cache(String s)
Get the string from the cache if possible. If the string has not been found, it is added to the cache. If there is such a string in the cache, that one is returned.

Parameters:
  `s` - the original string
Returns:
  a string with the same content, if possible from the cache

### clearCache

public static void clearCache()
Clear the cache. This method is used for testing.

### parseUInt31

public static int parseUInt31(String s, int start, int end)
Parses an unsigned 31-bit integer. Neither - nor + signs are allowed.

Parameters:
  `s` - string to parse
  `start` - the beginning index, inclusive
  `end` - the ending index, exclusive
Returns:
  the unsigned `int` not greater than `Integer.MAX_VALUE`.

### convertHexToBytes

public static byte[] convertHexToBytes(String s)
Convert a hex encoded string to a byte array.

Parameters:
  `s` - the hex encoded string
Returns:
  the byte array

### convertHexWithSpacesToBytes

public static ByteArrayOutputStream convertHexWithSpacesToBytes(ByteArrayOutputStream baos, String s, int start, int end)
Parses a hex encoded string with possible space separators and appends the decoded binary string to the specified output stream.

Parameters:
  `baos` - the output stream, or `null`
  `s` - the hex encoded string
  `start` - the start index
  `end` - the end index, exclusive
Returns:
  the specified output stream or a new output stream

### convertBytesToHex

public static String convertBytesToHex(byte[] value)
Convert a byte array to a hex encoded string.

Parameters:
  `value` - the byte array
Returns:
  the hex encoded string

### convertBytesToHex

public static String convertBytesToHex(byte[] value, int len)
Convert a byte array to a hex encoded string.

Parameters:
  `value` - the byte array
  `len` - the number of bytes to encode
Returns:
  the hex encoded string

### convertBytesToHex

public static StringBuilder convertBytesToHex(StringBuilder builder, byte[] value)
Convert a byte array to a hex encoded string and appends it to a specified string builder.

Parameters:
  `builder` - string builder to append to
  `value` - the byte array
Returns:
  the hex encoded string

### convertBytesToHex

public static StringBuilder convertBytesToHex(StringBuilder builder, byte[] value, int len)
Convert a byte array to a hex encoded string and appends it to a specified string builder.

Parameters:
  `builder` - string builder to append to
  `value` - the byte array
  `len` - the number of bytes to encode
Returns:
  the hex encoded string

### appendHex

public static StringBuilder appendHex(StringBuilder builder, long x, int bytes)
Appends specified number of trailing bytes from unsigned long value to a specified string builder.

Parameters:
  `builder` - string builder to append to
  `x` - value to append
  `bytes` - number of bytes to append
Returns:
  the specified string builder

### isNumber

public static boolean isNumber(String s)
Check if this string is a decimal number.

Parameters:
  `s` - the string
Returns:
  true if it is

### isWhitespaceOrEmpty

public static boolean isWhitespaceOrEmpty(String s)
Check if the specified string is empty or contains only whitespace.

Parameters:
  `s` - the string
Returns:
  whether the specified string is empty or contains only whitespace

### appendTwoDigits

public static StringBuilder appendTwoDigits(StringBuilder builder, int positiveValue)
Append a zero-padded number from 00 to 99 to a string builder.

Parameters:
  `builder` - the string builder
  `positiveValue` - the number to append
Returns:
  the specified string builder

### appendZeroPadded

public static StringBuilder appendZeroPadded(StringBuilder builder, int length, int positiveValue)
Append a zero-padded number to a string builder.

Parameters:
  `builder` - the string builder
  `length` - the number of characters to append
  `positiveValue` - the number to append
Returns:
  the specified string builder

### appendToLength

public static StringBuilder appendToLength(StringBuilder builder, String s, int length)
Appends the specified string or its part to the specified builder with maximum builder length limit.

Parameters:
  `builder` - the string builder
  `s` - the string to append
  `length` - the length limit
Returns:
  the specified string builder

### escapeMetaDataPattern

public static String escapeMetaDataPattern(String pattern)
Escape table or schema patterns used for DatabaseMetaData functions.

Parameters:
  `pattern` - the pattern
Returns:
  the escaped pattern

### startsWith

public static boolean startsWith(String text, String prefix)
Case-sensitive check if a starts with a . It only calls `String.startsWith()` and is only here for API consistency

Parameters:
  `text` - the full text starting with a prefix
  `prefix` - the full text starting with a prefix
Returns:
  TRUE only if text starts with the prefix

### startsWithIgnoringCase

public static boolean startsWithIgnoringCase(String text, String prefix)
Case-Insensitive check if a starts with a .

Parameters:
  `text` - the full text starting with a prefix
  `prefix` - the full text starting with a prefix
Returns:
  TRUE only if text starts with the prefix