Class StringUtil

java.lang.Object
org.apache.derby.iapi.util.StringUtil

public class StringUtil extends Object
A set of public static methods for dealing with Strings
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static char[]
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static 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
    doRegExpA(String src, String indent)
    Reg.exp substitute:
    private static String
    Reg.exp substitute:
    private static String
    doRegExpC(String src, String indent)
    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
    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[]
    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
    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
    slice(String value, int beginOffset, int endOffset, boolean trim)
    Return a slice (substring) of the passed in value, optionally trimmed.
    static boolean
    Compares two strings Strings will be uppercased in english and compared equivalent to s1.equalsIgnoreCase(s2) throws NPE if s1 is null
    static String
    Convert string to uppercase Always use the java.util.ENGLISH locale
    static 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
    Trim off trailing blanks but not leading blanks
    static String
    truncate(String value, int length)
    Truncate a String to the given length with no warnings or error raised if it is bigger.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • hex_table

      private static char[] hex_table
  • Constructor Details

    • StringUtil

      public StringUtil()
  • Method Details

    • formatForPrint

      public static final String formatForPrint(String input)
      Used to print out a string for error messages, chops is off at 60 chars for historical reasons.
    • toStringArray

      public static String[] toStringArray(Object[] objArray)
      A method that receive an array of Objects and return a String array representation of that array.
    • getAsciiBytes

      public static byte[] getAsciiBytes(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 String trimTrailing(String str)
      Trim off trailing blanks but not leading blanks
      Parameters:
      str -
      Returns:
      The input with trailing blanks stipped off
    • truncate

      public static String truncate(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 truncated
      length - 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 String slice(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 character
      endOffset - Inclusive end character
      trim - To trim or not to trim
      Returns:
      Sliceed value.
    • toHexString

      public static 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 at data[offset] is represented by the first two characters in the returned String.
      Parameters:
      data - byte array
      offset - 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(String s, int offset, int length)
      Convert a hexidecimal string generated by toHexString() back into a byte array.
      Parameters:
      s - String to convert
      offset - 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 String hexDump(byte[] data)
      Convert a byte array to a human-readable String for debugging purposes.
    • SQLToUpperCase

      public static String SQLToUpperCase(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(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 null
      Parameters:
      s1 - first string to compare
      s2 - second string to compare
      Returns:
      true if the two upppercased ENGLISH values are equal return false if s2 is null
    • normalizeSQLIdentifier

      public static String normalizeSQLIdentifier(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 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. 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 compressed
      quotes - string containing two single or double quotes.
      Returns:
      String where quotes have been compressed
    • quoteString

      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. 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 quote
      quote - the character to quote the string with (' or ")
      Returns:
      a string quoted with the specified quote character
      See Also:
    • quoteStringLiteral

      public static String quoteStringLiteral(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 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. 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 sanitize
      depth - indentation level the string is to be printed at (0,1,2..)
    • doRegExpA

      private static String doRegExpA(String src, 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 indent
      indent - indentation to lead source
      Returns:
      new version of src after substitution
    • doRegExpB

      private static String doRegExpB(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 String doRegExpC(String src, 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 indent
      indent - indentation to lead source
      Returns:
      new version of src after substitution
    • shortDBName

      public static String shortDBName(String canonicalDBName, char separatorChar)
      Get the short database name from the canonical name.