Package org.apache.derby.iapi.util
Class StringUtil
- java.lang.Object
-
- org.apache.derby.iapi.util.StringUtil
-
public class StringUtil extends java.lang.Object
A set of public static methods for dealing with Strings
-
-
Field Summary
Fields Modifier and Type Field Description private static char[]
hex_table
-
Constructor Summary
Constructors Constructor Description StringUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.String
compressQuotes(java.lang.String source, java.lang.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 java.lang.String
doRegExpA(java.lang.String src, java.lang.String indent)
Reg.exp substitute:private static java.lang.String
doRegExpB(java.lang.String src)
Reg.exp substitute:private static java.lang.String
doRegExpC(java.lang.String src, java.lang.String indent)
Reg.exp substitute:static java.lang.String
ensureIndent(java.lang.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 java.lang.String
formatForPrint(java.lang.String input)
Used to print out a string for error messages, chops is off at 60 chars for historical reasons.static byte[]
fromHexString(java.lang.String s, int offset, int length)
Convert a hexidecimal string generated by toHexString() back into a byte array.static byte[]
getAsciiBytes(java.lang.String input)
Get 7-bit ASCII character array from input String.static java.lang.String
hexDump(byte[] data)
Convert a byte array to a human-readable String for debugging purposes.static java.lang.String
normalizeSQLIdentifier(java.lang.String id)
Normalize a SQL identifer, up-casing if, and handling of (SQL 2003, section 5.2). (package private) static java.lang.String
quoteString(java.lang.String source, char quote)
Quote a string so that it can be used as an identifier or a string literal in SQL statements.static java.lang.String
quoteStringLiteral(java.lang.String string)
Quote a string so that it can be used as a string literal in an SQL statement.static java.lang.String
shortDBName(java.lang.String canonicalDBName, char separatorChar)
Get the short database name from the canonical name.static java.lang.String
slice(java.lang.String value, int beginOffset, int endOffset, boolean trim)
Return a slice (substring) of the passed in value, optionally trimmed.static boolean
SQLEqualsIgnoreCase(java.lang.String s1, java.lang.String s2)
Compares two strings Strings will be uppercased in english and compared equivalent to s1.equalsIgnoreCase(s2) throws NPE if s1 is nullstatic java.lang.String
SQLToUpperCase(java.lang.String s)
Convert string to uppercase Always use the java.util.ENGLISH localestatic java.lang.String
toHexString(byte[] data, int offset, int length)
Convert a byte array to a String with a hexidecimal format.static java.lang.String[]
toStringArray(java.lang.Object[] objArray)
A method that receive an array of Objects and return a String array representation of that array.static java.lang.String
trimTrailing(java.lang.String str)
Trim off trailing blanks but not leading blanksstatic java.lang.String
truncate(java.lang.String value, int length)
Truncate a String to the given length with no warnings or error raised if it is bigger.
-
-
-
Method Detail
-
formatForPrint
public static final java.lang.String formatForPrint(java.lang.String input)
Used to print out a string for error messages, chops is off at 60 chars for historical reasons.
-
toStringArray
public static java.lang.String[] toStringArray(java.lang.Object[] objArray)
A method that receive an array of Objects and return a String array representation of that array.
-
getAsciiBytes
public static byte[] getAsciiBytes(java.lang.String input)
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
public static java.lang.String trimTrailing(java.lang.String str)
Trim off trailing blanks but not leading blanks- Parameters:
str
-- Returns:
- The input with trailing blanks stipped off
-
truncate
public static java.lang.String truncate(java.lang.String value, int length)
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
public static java.lang.String slice(java.lang.String value, int beginOffset, int endOffset, boolean trim)
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
public static java.lang.String toHexString(byte[] data, int offset, int length)
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
public static byte[] fromHexString(java.lang.String s, int offset, int length)
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
public static java.lang.String hexDump(byte[] data)
Convert a byte array to a human-readable String for debugging purposes.
-
SQLToUpperCase
public static java.lang.String SQLToUpperCase(java.lang.String s)
Convert string to uppercase Always use the java.util.ENGLISH locale- Parameters:
s
- string to uppercase- Returns:
- uppercased string
-
SQLEqualsIgnoreCase
public static boolean SQLEqualsIgnoreCase(java.lang.String s1, java.lang.String s2)
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
public static java.lang.String normalizeSQLIdentifier(java.lang.String id)
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
public static java.lang.String compressQuotes(java.lang.String source, java.lang.String quotes)
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
static java.lang.String quoteString(java.lang.String source, char quote)
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(String)
,IdUtil.normalToDelimited(String)
-
quoteStringLiteral
public static java.lang.String quoteStringLiteral(java.lang.String string)
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
public static java.lang.String ensureIndent(java.lang.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. 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
private static java.lang.String doRegExpA(java.lang.String src, java.lang.String indent)
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
private static java.lang.String doRegExpB(java.lang.String src)
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
private static java.lang.String doRegExpC(java.lang.String src, java.lang.String indent)
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
public static java.lang.String shortDBName(java.lang.String canonicalDBName, char separatorChar)
Get the short database name from the canonical name.
-
-