Class Strings

java.lang.Object
org.zkoss.lang.Strings

public class Strings extends Object
String utilities and constants
Author:
tomyeh
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static final int
    anyOf(String src, String delimiters, int from)
    Returns the index that is one of delimiters, or the length if none of delimiter is found.
    static final String
    defaultIfEmpty(String value, String defaultValue)
    Returns the passed value, or the default value if it is empty.
    static final String
    encode(int val)
    Returns an encoded string, faster and shorter than Long.toHexString.
    static final String
    encode(long val)
    Returns an encoded string, faster and shorter than Long.toHexString.
    static final StringBuffer
    encode(StringBuffer sb, int val)
    Returns an encoded string buffer, faster and shorter than Integer.toHexString.
    static final StringBuffer
    encode(StringBuffer sb, long val)
    Returns an encoded string buffer, faster and shorter than Long.toHexString.
    static final String
    escape(String src, String specials)
    Escapes (a.k.a, quote) the special characters with backslash.
    static final int
    indexOf(StringBuffer sb, char cc, int j)
    Returns the index of the give character in the given string buffer, or -1 if not found.
    static final boolean
    Returns true if the string is null or empty or pure blank.
    static final boolean
    Returns true if the string is null or empty.
    static final <T> String
    join(T[] array)
    Joins the elements of the array into a single String separated by a comma.
    static final <T> String
    join(T[] array, char separator)
    Joins the elements of the array into a single String separated by the given separator.
    static final <T> String
    join(T[] array, char separator, int startIndex, int endIndex)
    Joins the elements of the array into a single String separated by the given separator from the startIndex to the endIndex.
    static final int
    lastAnyOf(String src, String delimiters, int from)
    static final int
    lastIndexOf(StringBuffer sb, char cc, int j)
    Returns the last index of the give character in the given string buffer, or -1 if not found.
    static int
    nextSeparator(String src, int from, char[] separators, boolean escBackslash, boolean escQuot, boolean quotAsSeparator)
    Returns the next separator index in the src string.
    static int
    nextSeparator(String src, int from, char[] separators, boolean escBackslash, boolean escQuot, boolean quotAsSeparator, boolean parenthesis)
    Returns the next separator index in the src string.
    static final Strings.Result
    nextToken(String src, int from, char[] separators)
    Returns the next token with unescape.
    static final Strings.Result
    nextToken(String src, int from, char[] separators, boolean escBackslash, boolean quotAsToken)
    Returns the next token with additional options.
    static final Strings.Result
    nextToken(String src, int from, char[] separators, boolean escBackslash, boolean quotAsToken, boolean parenthesis)
    Returns the next token with additional options.
    static final int
    nextWhitespace(CharSequence src, int from)
    Returns the next whitespace.
    static final int
    skipWhitespaces(CharSequence src, int from)
    Returns the next index after skipping whitespaces.
    static final int
    static final Strings.Result
    substring(String src, int from, char until)
    Returns the substring from the from index up to the until character or end-of-string.
    static final Strings.Result
    substring(String src, int from, char until, boolean escBackslash)
    Returns the substring from the from index up to the until character or end-of-string.
    static final String
    toString(byte[] data)
    Converts the given byte[] to UTF-8 string, if possible.
    static final StringBuffer
    trim(StringBuffer buf, int index)
    Trims the string buffer by removing the leading and trailing whitespaces.
    static final String
    Un-escape the quoted string.

    Methods inherited from class java.lang.Object

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

  • Constructor Details

    • Strings

      public Strings()
  • Method Details

    • isEmpty

      public static final boolean isEmpty(String s)
      Returns true if the string is null or empty.
    • isBlank

      public static final boolean isBlank(String s)
      Returns true if the string is null or empty or pure blank.
    • trim

      public static final StringBuffer trim(StringBuffer buf, int index)
      Trims the string buffer by removing the leading and trailing whitespaces. Note: unlike String.trim(), you can specify the index of the first character to start trimming.

      Like String.trim(), a whitespace is a character that has a code not great than '\u0020' (the space character)

      Parameters:
      buf - the string buffer to trim the leading and trailing.
      index - the index of the first character to trim (i.e., consider as the leading character). If 0, it starts from the beginning.
      Returns:
      the same string buffer
      Since:
      3.0.4
    • encode

      public static final StringBuffer encode(StringBuffer sb, int val)
      Returns an encoded string buffer, faster and shorter than Integer.toHexString. It uses numbers and lower-case letters only. Thus it is a valid variable name if prefix with an alphabet. At least one character is generated.

      It works even in system that is case-insensitive, such as IE.

      It is useful to generate a string to represent a number.

    • encode

      public static final StringBuffer encode(StringBuffer sb, long val)
      Returns an encoded string buffer, faster and shorter than Long.toHexString. It uses numbers and lower-case letters only. Thus it is a valid variable name if prefix with an alphabet. At least one character is generated.

      It works even in system that is case-insensitive, such as IE.

      It is useful to generate a string to represent a number.

    • encode

      public static final String encode(int val)
      Returns an encoded string, faster and shorter than Long.toHexString.
    • encode

      public static final String encode(long val)
      Returns an encoded string, faster and shorter than Long.toHexString.
    • indexOf

      public static final int indexOf(StringBuffer sb, char cc, int j)
      Returns the index of the give character in the given string buffer, or -1 if not found. It is equivalent to sb.indexOf(""+cc, j);, but faster.
      Since:
      5.0.3
    • lastIndexOf

      public static final int lastIndexOf(StringBuffer sb, char cc, int j)
      Returns the last index of the give character in the given string buffer, or -1 if not found. It is equivalent to sb.lastIndexOf(""+cc, j);, but faster.
      Since:
      5.0.3
    • anyOf

      public static final int anyOf(String src, String delimiters, int from)
      Returns the index that is one of delimiters, or the length if none of delimiter is found.

      Unlike String.indexOf(String, int), this method returns the first occurrence of any character in the delimiters.

      This method is optimized to use String.indexOf(char, int) if it found the length of delimiter is 1.

      Parameters:
      src - the source string to search
      from - the index to start the search from
      delimiters - the set of characters to search for
      Returns:
      the index that is one of delimiters. If return >= src.length(), it means no such delimiters
      See Also:
    • lastAnyOf

      public static final int lastAnyOf(String src, String delimiters, int from)
      The backward version of anyOf(java.lang.String, java.lang.String, int).

      This method is optimized to use String.indexOf(char, int) if it found the length of delimiter is 1.

      Returns:
      the previous index that is one of delimiter. If it is negative, it means no delimiter in front of from
      See Also:
    • skipWhitespaces

      public static final int skipWhitespaces(CharSequence src, int from)
      Returns the next index after skipping whitespaces.
    • skipWhitespacesBackward

      public static final int skipWhitespacesBackward(CharSequence src, int from)
      Returns:
      the next index that is not a whitespace. If it is negative, it means no whitespace in front of it.
    • nextWhitespace

      public static final int nextWhitespace(CharSequence src, int from)
      Returns the next whitespace.
    • escape

      public static final String escape(String src, String specials)
      Escapes (a.k.a, quote) the special characters with backslash. It prefix a backslash to any characters specified in the specials argument.

      Note: specials usually contains '\\'.

      For example, Maps.parse(java.util.Map<? super java.lang.String, ? super java.lang.String>, java.lang.String, char, char) will un-quote backspace. Thus, if you want to preserve backslash, you have invoke escape(s, "\\") before calling Maps.parse().

      Parameters:
      src - the string to process. If null, null is returned.
      specials - a string of characters that shall be escaped/quoted To escape a string in JavaScript code snippet, you can use Encode.forJavaScript(String).
      See Also:
    • unescape

      public static final String unescape(String s)
      Un-escape the quoted string.
      See Also:
    • substring

      public static final Strings.Result substring(String src, int from, char until)
      Returns the substring from the from index up to the until character or end-of-string. Unlike String.subsring, it converts \f, \n, \t and \r. It doesn't handle u and x yet.
      Returns:
      the result (never null). Result.next is the position of the until character if found, or a number larger than length() if no such character.
    • substring

      public static final Strings.Result substring(String src, int from, char until, boolean escBackslash)
      Returns the substring from the from index up to the until character or end-of-string.
      Parameters:
      escBackslash - whether to treat '\\' specially (as escape char) It doesn't handle u and x yet.
      Returns:
      the result (never null). Result.next is the position of the until character if found, or a number larger than length() if no such character. You can tell which case it is by examining Strings.Result.separator.
    • nextToken

      public static final Strings.Result nextToken(String src, int from, char[] separators) throws IllegalSyntaxException
      Returns the next token with unescape.
      • It trims whitespaces before and after the token.
      • It handles both '\'' and '"'. All characters between them are considered as a token.
      • If nothing found before end-of-string, null is returned
      If a separator is found, it is returned in Strings.Result.separator.
      Throws:
      IllegalSyntaxException - if the quoted string is unclosed.
    • nextToken

      public static final Strings.Result nextToken(String src, int from, char[] separators, boolean escBackslash, boolean quotAsToken) throws IllegalSyntaxException
      Returns the next token with additional options. It is the same as nextToken(src, from, separators, escBackslash, quotAsToken, false); Refer to nextToken(String, int, char[], boolean, boolean, boolean) for more information.
      Throws:
      IllegalSyntaxException - if the quoted string is unclosed.
      See Also:
    • nextToken

      public static final Strings.Result nextToken(String src, int from, char[] separators, boolean escBackslash, boolean quotAsToken, boolean parenthesis) throws IllegalSyntaxException
      Returns the next token with additional options.
      • It trims whitespaces before and after the token.
      • If quotAsToken is true, all characters between quotations ('\'' or '"') are considered as a token.
      • If parenthesis is true, the separators and quotes inside a pair of parenthesis won't be treated specially. It is useful if EL expressions might be contained.
      • Consider '\\' as the escape char if escBackslash is true.
      • If nothing found before end-of-string, null is returned
      If a separator is found, it is returned in Strings.Result.separator.
      Parameters:
      escBackslash - whether to treat '\\' specially (as escape char) It doesn't handle u and x yet.
      quotAsToken - whether to treat characters inside '\'' or '"' as a token. Note: the quotes are excluded from the token.
      parenthesis - whether to ignore separators and quotes inside a pair of parentheses. Recognized parentheses include {}, [] or ().
      Throws:
      IllegalSyntaxException - if the quoted string is unclosed.
      Since:
      3.0.6
    • nextSeparator

      public static int nextSeparator(String src, int from, char[] separators, boolean escBackslash, boolean escQuot, boolean quotAsSeparator)
      Returns the next separator index in the src string.
      Parameters:
      escQuot - whether to escape characters inside quotations ('\'' or '"'). In other words, ignore separators inside quotations
      quotAsSeparator - whether to consider quotations as one of the separators
      Since:
      2.4.0
    • nextSeparator

      public static int nextSeparator(String src, int from, char[] separators, boolean escBackslash, boolean escQuot, boolean quotAsSeparator, boolean parenthesis)
      Returns the next separator index in the src string.
      Parameters:
      escQuot - whether to escape characters inside quotations ('\'' or '"'). In other words, it specifies whether to ignore separators inside quotations
      quotAsSeparator - whether to consider quotations as one of the separators. If escQuot is true, quotAsSeparator is ignored.
      parenthesis - whether to ignore separators and quotes in side a pair of parentheses. Recognized parentheses include {}, [] or ().
      Since:
      3.0.6
    • join

      public static final <T> String join(T[] array)
      Joins the elements of the array into a single String separated by a comma.
      Parameters:
      array -
      Since:
      8.0.0
    • join

      public static final <T> String join(T[] array, char separator)
      Joins the elements of the array into a single String separated by the given separator.
      Parameters:
      array -
      separator -
      Since:
      8.0.0
    • join

      public static final <T> String join(T[] array, char separator, int startIndex, int endIndex)
      Joins the elements of the array into a single String separated by the given separator from the startIndex to the endIndex.
      Parameters:
      array -
      separator -
      startIndex -
      endIndex -
      Since:
      8.0.0
    • toString

      public static final String toString(byte[] data)
      Converts the given byte[] to UTF-8 string, if possible. Or return with the default charset.

      This is a method helper for JDK 5

      Since:
      8.0.2
    • defaultIfEmpty

      public static final String defaultIfEmpty(String value, String defaultValue)
      Returns the passed value, or the default value if it is empty.
      Parameters:
      value - the value
      defaultValue - the default value
      Returns:
      value if not empty. defaultValue if empty.
      Since:
      9.5.0