Class StringUtil

java.lang.Object
org.eclipse.jetty.util.StringUtil

public class StringUtil extends Object
Fast String Utilities.

These string utilities provide both convenience methods and performance improvements over most standard library versions. The main aim of the optimizations is to avoid object creation unless absolutely required.

  • Field Details

  • Method Details

    • asciiToLowerCase

      public static char asciiToLowerCase(char c)
      fast lower case conversion. Only works on ascii (not unicode)
      Parameters:
      c - the char to convert
      Returns:
      a lower case version of c
    • asciiToLowerCase

      public static byte asciiToLowerCase(byte c)
      fast lower case conversion. Only works on ascii (not unicode)
      Parameters:
      c - the byte to convert
      Returns:
      a lower case version of c
    • asciiToLowerCase

      public static String asciiToLowerCase(String s)
      fast lower case conversion. Only works on ascii (not unicode)
      Parameters:
      s - the string to convert
      Returns:
      a lower case version of s
    • asciiToUpperCase

      public static String asciiToUpperCase(String s)
      fast upper case conversion. Only works on ascii (not unicode)
      Parameters:
      s - the string to convert
      Returns:
      a lower case version of s
    • sanitizeFileSystemName

      public static String sanitizeFileSystemName(String str)
      Replace all characters from input string that are known to have special meaning in various filesystems.

      This will replace all of the following characters with a "_" (underscore).

      • Control Characters
      • Anything not 7-bit printable ASCII
      • Special characters: pipe, redirect, combine, slash, equivalence, bang, glob, selection, etc...
      • Space
      Parameters:
      str - the raw input string
      Returns:
      the sanitized output string. or null if str is null.
    • asciiEqualsIgnoreCase

      public static boolean asciiEqualsIgnoreCase(String string, String other)
      Check for string equality, ignoring StandardCharsets.US_ASCII case differences.
      Parameters:
      string - The string to check
      other - The other string to check
      Returns:
      true if the strings are equal, ignoring StandardCharsets.US_ASCII case differences.
    • startsWithIgnoreCase

      @Deprecated public static boolean startsWithIgnoreCase(String string, String prefix)
      Check for a string prefix, ignoring StandardCharsets.US_ASCII case differences.
      Parameters:
      string - The string to check
      prefix - The sub string to look for as a prefix
      Returns:
      true if the string ends with the substring, ignoring StandardCharsets.US_ASCII case differences.
    • asciiStartsWithIgnoreCase

      public static boolean asciiStartsWithIgnoreCase(String string, String prefix)
      Check for a string prefix, ignoring StandardCharsets.US_ASCII case differences.
      Parameters:
      string - The string to check
      prefix - The sub string to look for as a prefix
      Returns:
      true if the string ends with the substring, ignoring StandardCharsets.US_ASCII case differences.
    • endsWithIgnoreCase

      @Deprecated public static boolean endsWithIgnoreCase(String string, String suffix)
      Check for a string suffix, ignoring StandardCharsets.US_ASCII case differences.
      Parameters:
      string - The string to check
      suffix - The sub string to look for as a suffix
      Returns:
      true if the string ends with the substring, ignoring StandardCharsets.US_ASCII case differences.
    • asciiEndsWithIgnoreCase

      public static boolean asciiEndsWithIgnoreCase(String string, String suffix)
      Check for a string suffix, ignoring StandardCharsets.US_ASCII case differences.
      Parameters:
      string - The string to check
      suffix - The sub string to look for as a suffix
      Returns:
      true if the string ends with the substring, ignoring StandardCharsets.US_ASCII case differences.
    • indexFrom

      public static int indexFrom(String s, String chars)
      returns the next index of a character from the chars string
      Parameters:
      s - the input string to search
      chars - the chars to look for
      Returns:
      the index of the character in the input stream found.
    • replace

      public static String replace(String str, char find, char with)
      Replace chars within string.

      Fast replacement for java.lang.String#String.replace(char, char)

      Parameters:
      str - the input string
      find - the char to look for
      with - the char to replace with
      Returns:
      the now replaced string
    • replace

      public static String replace(String s, String sub, String with)
      Replace substrings within string.

      Fast replacement for java.lang.String#String.replace(CharSequence, CharSequence)

      Parameters:
      s - the input string
      sub - the string to look for
      with - the string to replace with
      Returns:
      the now replaced string
    • replaceFirst

      public static String replaceFirst(String original, String target, String replacement)
      Replace first substrings within string.

      Fast replacement for java.lang.String#String.replaceFirst(String, String), but without Regex support.

      Parameters:
      original - the original string
      target - the target string to look for
      replacement - the replacement string to use
      Returns:
      the replaced string
    • append

      public static void append(StringBuilder buf, String s, int offset, int length)
      Append substring to StringBuilder
      Parameters:
      buf - StringBuilder to append to
      s - String to append from
      offset - The offset of the substring
      length - The length of the substring
    • append

      public static void append(StringBuilder buf, byte b, int base)
      append hex digit
      Parameters:
      buf - the buffer to append to
      b - the byte to append
      base - the base of the hex output (almost always 16).
    • append2digits

      public static void append2digits(StringBuilder buf, int i)
      Append 2 digits (zero padded) to the StringBuilder
      Parameters:
      buf - the buffer to append to
      i - the value to append
    • nonNull

      public static String nonNull(String s)
      Return a non null string.
      Parameters:
      s - String
      Returns:
      The string passed in or empty string if it is null.
    • toListNonNull

      public static List<String> toListNonNull(String... strings)
      Convert an array of strings to a list of non-null strings.
      Parameters:
      strings - the array
      Returns:
      The list of non-null strings.
      See Also:
    • equals

      public static boolean equals(String s, char[] buf, int offset, int length)
    • toUTF8String

      public static String toUTF8String(byte[] b, int offset, int length)
    • toString

      @Deprecated(since="10", forRemoval=true) public static String toString(byte[] b, int offset, int length, String charset)
      Deprecated, for removal: This API element is subject to removal in a future version.
    • indexOfControlChars

      public static int indexOfControlChars(String str)
      Find the index of a control characters in String

      This will return a result on the first occurrence of a control character, regardless if there are more than one.

      Note: uses codepoint version of Character.isISOControl(int) to support Unicode better.

         indexOfControlChars(null)      == -1
         indexOfControlChars("")        == -1
         indexOfControlChars("\r\n")    == 0
         indexOfControlChars("\t")      == 0
         indexOfControlChars("   ")     == -1
         indexOfControlChars("a")       == -1
         indexOfControlChars(".")       == -1
         indexOfControlChars(";\n")     == 1
         indexOfControlChars("abc\f")   == 3
         indexOfControlChars("z\010")   == 1
         indexOfControlChars(":") == 1
       
      Parameters:
      str - the string to test.
      Returns:
      the index of first control character in string, -1 if no control characters encountered
    • isBlank

      public static boolean isBlank(String str)
      Test if a string is null or only has whitespace characters in it.

      Note: uses codepoint version of Character.isWhitespace(int) to support Unicode better.

         isBlank(null)   == true
         isBlank("")     == true
         isBlank("\r\n") == true
         isBlank("\t")   == true
         isBlank("   ")  == true
         isBlank("a")    == false
         isBlank(".")    == false
         isBlank(";\n")  == false
       
      Parameters:
      str - the string to test.
      Returns:
      true if string is null or only whitespace characters, false if non-whitespace characters encountered.
    • isEmpty

      public static boolean isEmpty(String str)

      Checks if a String is empty ("") or null.

         isEmpty(null)   == true
         isEmpty("")     == true
         isEmpty("\r\n") == false
         isEmpty("\t")   == false
         isEmpty("   ")  == false
         isEmpty("a")    == false
         isEmpty(".")    == false
         isEmpty(";\n")  == false
       
      Parameters:
      str - the string to test.
      Returns:
      true if string is null or empty.
    • getLength

      public static int getLength(String s)
      Get the length of a string where a null string is length 0.
      Parameters:
      s - the string.
      Returns:
      the length of the string.
    • isNotBlank

      public static boolean isNotBlank(String str)
      Test if a string is not null and contains at least 1 non-whitespace characters in it.

      Note: uses codepoint version of Character.isWhitespace(int) to support Unicode better.

         isNotBlank(null)   == false
         isNotBlank("")     == false
         isNotBlank("\r\n") == false
         isNotBlank("\t")   == false
         isNotBlank("   ")  == false
         isNotBlank("a")    == true
         isNotBlank(".")    == true
         isNotBlank(";\n")  == true
       
      Parameters:
      str - the string to test.
      Returns:
      true if string is not null and has at least 1 non-whitespace character, false if null or all-whitespace characters.
    • isHex

      public static boolean isHex(String str, int offset, int length)
    • fromHexString

      public static byte[] fromHexString(String s)
    • toHexString

      public static String toHexString(byte b)
    • toHexString

      public static String toHexString(byte[] b)
    • toHexString

      public static String toHexString(byte[] b, int offset, int length)
    • printable

      public static String printable(String name)
    • printable

      public static String printable(byte[] b)
    • getBytes

      public static byte[] getBytes(String s)
    • getBytes

      public static byte[] getBytes(String s, String charset)
    • getUtf8Bytes

      public static byte[] getUtf8Bytes(String s)
    • toInt

      public static int toInt(String string, int from)
      Convert String to an integer. Parses up to the first non-numeric character. If no number is found an IllegalArgumentException is thrown
      Parameters:
      string - A String containing an integer.
      from - The index to start parsing from
      Returns:
      an int
    • truncate

      public static String truncate(String str, int maxSize)
      Truncate a string to a max size.
      Parameters:
      str - the string to possibly truncate
      maxSize - the maximum size of the string
      Returns:
      the truncated string. if str param is null, then the returned string will also be null.
    • arrayFromString

      public static String[] arrayFromString(String s)
      Parse the string representation of a list using csvSplit(List, String, int, int)
      Parameters:
      s - The string to parse, expected to be enclosed as '[...]'
      Returns:
      An array of parsed values.
    • csvSplit

      public static String[] csvSplit(String s)
      Parse a CSV string using csvSplit(List, String, int, int)
      Parameters:
      s - The string to parse
      Returns:
      An array of parsed values.
    • csvSplit

      public static String[] csvSplit(String s, int off, int len)
      Parse a CSV string using csvSplit(List, String, int, int)
      Parameters:
      s - The string to parse
      off - The offset into the string to start parsing
      len - The len in characters to parse
      Returns:
      An array of parsed values.
    • csvSplit

      public static List<String> csvSplit(List<String> list, String s, int off, int len)
      Split a quoted comma separated string to a list

      Handle rfc4180-like CSV strings, with the exceptions:

      • quoted values may contain double quotes escaped with back-slash
      • Non-quoted values are trimmed of leading trailing white space
      • trailing commas are ignored
      • double commas result in a empty string value
      Parameters:
      list - The Collection to split to (or null to get a new list)
      s - The string to parse
      off - The offset into the string to start parsing
      len - The len in characters to parse
      Returns:
      list containing the parsed list values
    • sanitizeXmlString

      public static String sanitizeXmlString(String html)
    • strip

      public static String strip(String str, String find)
    • valueOf

      public static String valueOf(Object object)
      The String value of an Object

      This method calls String.valueOf(Object) unless the object is null, in which case null is returned

      Parameters:
      object - The object
      Returns:
      String value or null
    • randomAlphaNumeric

      public static String randomAlphaNumeric(int digits)