Package org.apache.derby.iapi.util
Class StringUtil
java.lang.Object
org.apache.derby.iapi.util.StringUtil
A set of public static methods for dealing with Strings
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String
compressQuotes
(String source, String quotes) Compress 2 adjacent (single or double) quotes into a single (s or d) quote when found in the middle of a String.private static String
Reg.exp substitute:private static String
Reg.exp substitute:private static String
Reg.exp substitute:static String
ensureIndent
(String formatted, int depth) Utility for formatting which bends a multi-line string into shape for outputting it in a context where there is depth tabs.static final String
formatForPrint
(String input) Used to print out a string for error messages, chops is off at 60 chars for historical reasons.static byte[]
fromHexString
(String s, int offset, int length) Convert a hexidecimal string generated by toHexString() back into a byte array.static byte[]
getAsciiBytes
(String input) Get 7-bit ASCII character array from input String.static String
hexDump
(byte[] data) Convert a byte array to a human-readable String for debugging purposes.static String
Normalize a SQL identifer, up-casing if, and handling of (SQL 2003, section 5.2). (package private) static String
quoteString
(String source, char quote) Quote a string so that it can be used as an identifier or a string literal in SQL statements.static String
quoteStringLiteral
(String string) Quote a string so that it can be used as a string literal in an SQL statement.static String
shortDBName
(String canonicalDBName, char separatorChar) Get the short database name from the canonical name.static String
Return a slice (substring) of the passed in value, optionally trimmed.static boolean
SQLEqualsIgnoreCase
(String s1, String s2) Compares two strings Strings will be uppercased in english and compared equivalent to s1.equalsIgnoreCase(s2) throws NPE if s1 is nullstatic String
Convert string to uppercase Always use the java.util.ENGLISH localestatic String
toHexString
(byte[] data, int offset, int length) Convert a byte array to a String with a hexidecimal format.static String[]
toStringArray
(Object[] objArray) A method that receive an array of Objects and return a String array representation of that array.static String
trimTrailing
(String str) Trim off trailing blanks but not leading blanksstatic String
Truncate a String to the given length with no warnings or error raised if it is bigger.
-
Field Details
-
hex_table
private static char[] hex_table
-
-
Constructor Details
-
StringUtil
public StringUtil()
-
-
Method Details
-
formatForPrint
Used to print out a string for error messages, chops is off at 60 chars for historical reasons. -
toStringArray
A method that receive an array of Objects and return a String array representation of that array. -
getAsciiBytes
Get 7-bit ASCII character array from input String. The lower 7 bits of each character in the input string is assumed to be the ASCII character value. Hexadecimal - Character | 00 NUL| 01 SOH| 02 STX| 03 ETX| 04 EOT| 05 ENQ| 06 ACK| 07 BEL| | 08 BS | 09 HT | 0A NL | 0B VT | 0C NP | 0D CR | 0E SO | 0F SI | | 10 DLE| 11 DC1| 12 DC2| 13 DC3| 14 DC4| 15 NAK| 16 SYN| 17 ETB| | 18 CAN| 19 EM | 1A SUB| 1B ESC| 1C FS | 1D GS | 1E RS | 1F US | | 20 SP | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' | | 28 ( | 29 ) | 2A * | 2B + | 2C , | 2D - | 2E . | 2F / | | 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 | | 38 8 | 39 9 | 3A : | 3B ; | 3C < | 3D = | 3E > | 3F ? | | 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G | | 48 H | 49 I | 4A J | 4B K | 4C L | 4D M | 4E N | 4F O | | 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W | | 58 X | 59 Y | 5A Z | 5B [ | 5C \ | 5D ] | 5E ^ | 5F _ | | 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g | | 68 h | 69 i | 6A j | 6B k | 6C l | 6D m | 6E n | 6F o | | 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w | | 78 x | 79 y | 7A z | 7B { | 7C | | 7D } | 7E ~ | 7F DEL| -
trimTrailing
Trim off trailing blanks but not leading blanks- Parameters:
str
-- Returns:
- The input with trailing blanks stipped off
-
truncate
Truncate a String to the given length with no warnings or error raised if it is bigger.- Parameters:
value
- String to be truncatedlength
- Maximum length of string- Returns:
- Returns value if value is null or value.length() is less or equal to than length, otherwise a String representing value truncated to length.
-
slice
Return a slice (substring) of the passed in value, optionally trimmed. WARNING - endOffset is inclusive for historical reasons, unlike String.substring() which has an exclusive ending offset.- Parameters:
value
- Value to slice, must be non-null.beginOffset
- Inclusive start characterendOffset
- Inclusive end charactertrim
- To trim or not to trim- Returns:
- Sliceed value.
-
toHexString
Convert a byte array to a String with a hexidecimal format. The String may be converted back to a byte array using fromHexString.
For each byte (b) two characaters are generated, the first character represents the high nibble (4 bits) in hexidecimal (b & 0xf0
), the second character represents the low nibble (b &xs; 0x0f
).
The byte atdata[offset]
is represented by the first two characters in the returned String.- Parameters:
data
- byte arrayoffset
- starting byte (zero based) to convert.length
- number of bytes to convert.- Returns:
- the String (with hexidecimal format) form of the byte array
-
fromHexString
Convert a hexidecimal string generated by toHexString() back into a byte array.- Parameters:
s
- String to convertoffset
- starting character (zero based) to convert.length
- number of characters to convert.- Returns:
- the converted byte array. Returns null if the length is not a multiple of 2.
-
hexDump
Convert a byte array to a human-readable String for debugging purposes. -
SQLToUpperCase
Convert string to uppercase Always use the java.util.ENGLISH locale- Parameters:
s
- string to uppercase- Returns:
- uppercased string
-
SQLEqualsIgnoreCase
Compares two strings Strings will be uppercased in english and compared equivalent to s1.equalsIgnoreCase(s2) throws NPE if s1 is null- Parameters:
s1
- first string to compares2
- second string to compare- Returns:
- true if the two upppercased ENGLISH values are equal return false if s2 is null
-
normalizeSQLIdentifier
Normalize a SQL identifer, up-casing if, and handling of (SQL 2003, section 5.2). The normal form is used internally in Derby. - Parameters:
id
- syntacically correct SQL identifier
-
compressQuotes
Compress 2 adjacent (single or double) quotes into a single (s or d) quote when found in the middle of a String. NOTE: """" or '''' will be compressed into "" or ''. This function assumes that the leading and trailing quote from a string or delimited identifier have already been removed.- Parameters:
source
- string to be compressedquotes
- string containing two single or double quotes.- Returns:
- String where quotes have been compressed
-
quoteString
Quote a string so that it can be used as an identifier or a string literal in SQL statements. Identifiers are surrounded by double quotes and string literals are surrounded by single quotes. If the string contains quote characters, they are escaped.- Parameters:
source
- the string to quotequote
- the character to quote the string with (' or ")- Returns:
- a string quoted with the specified quote character
- See Also:
-
quoteStringLiteral
Quote a string so that it can be used as a string literal in an SQL statement.- Parameters:
string
- the string to quote- Returns:
- the string surrounded by single quotes and with proper escaping of any single quotes inside the string
-
ensureIndent
Utility for formatting which bends a multi-line string into shape for outputting it in a context where there is depth tabs. Trailing newlines are discarded as well.Replace "^[\t]*" with "depth" number of tabs.
Replace "\n+$" with "". Replace all "\n[\t]*" with "\n" + "depth" number of tabs.
- Parameters:
formatted
- string to sanitizedepth
- indentation level the string is to be printed at (0,1,2..)
-
doRegExpA
Reg.exp substitute:
Pattern pat_a = Pattern.compile("\\A\\t*");
Matcher m_a = pat_a.matcher(src);
src = m_a.replaceFirst(indent.toString());- Parameters:
src
- source string in which to substitute indentindent
- indentation to lead source- Returns:
- new version of src after substitution
-
doRegExpB
Reg.exp substitute:
Pattern pat_b = Pattern.compile("\\n+\\Z");
Matcher m_b = pat_b.matcher(formatted);
formatted = m_b.replaceFirst("");- Parameters:
src
- source string in which to substitute- Returns:
- new version of src after substitution
-
doRegExpC
Reg.exp substitute:
Pattern pat_c = Pattern.compile("\\n\\t*");
Matcher m_c = pat_c.matcher(formatted);
formatted = m_c.replaceAll("\n" + indent.toString());- Parameters:
src
- source string in which to substitute indentindent
- indentation to lead source- Returns:
- new version of src after substitution
-
shortDBName
Get the short database name from the canonical name.
-