Class StringUtils

java.lang.Object
tech.tablesaw.util.StringUtils

public class StringUtils extends Object
Operations on String that are null safe.

StringUtils handles null input Strings quietly. That is to say that a null input will return null. Where a boolean or int is being returned details vary by method.

A side effect of the null handling is that a NullPointerException should be considered a bug in StringUtils.

Methods in this class give sample code to explain their operation. The symbol * is used to indicate any input including null.

#ThreadSafe#

Since:
1.0
See Also:
  • Method Details

    • repeat

      public static String repeat(String str, int repeat)
      Repeat a String repeat times to form a new String.
       StringUtils.repeat(null, 2) = null
       StringUtils.repeat("", 0)   = ""
       StringUtils.repeat("", 2)   = ""
       StringUtils.repeat("a", 3)  = "aaa"
       StringUtils.repeat("ab", 2) = "abab"
       StringUtils.repeat("a", -2) = ""
       
      Parameters:
      str - the String to repeat, may be null
      repeat - number of times to repeat str, negative treated as zero
      Returns:
      a new String consisting of the original String repeated, null if null String input
    • length

      public static int length(CharSequence cs)
      Gets a CharSequence length or 0 if the CharSequence is null.
      Parameters:
      cs - a CharSequence or null
      Returns:
      CharSequence length or 0 if the CharSequence is null.
      Since:
      2.4, 3.0 Changed signature from length(String) to length(CharSequence)
    • capitalize

      public static String capitalize(String str)
      Capitalizes a String changing the first character to title case as per Character.toTitleCase(int). No other characters are changed.

      A null input String returns null.

       StringUtils.capitalize(null)  = null
       StringUtils.capitalize("")    = ""
       StringUtils.capitalize("cat") = "Cat"
       StringUtils.capitalize("cAt") = "CAt"
       StringUtils.capitalize("'cat'") = "'cat'"
       
      Parameters:
      str - the String to capitalize, may be null
      Returns:
      the capitalized String, null if null String input
      Since:
      2.0
    • isAlpha

      public static boolean isAlpha(String cs)
      Checks if the CharSequence contains only Unicode letters.

      null will return false. An empty CharSequence (length()=0) will return false.

       StringUtils.isAlpha(null)   = false
       StringUtils.isAlpha("")     = false
       StringUtils.isAlpha("  ")   = false
       StringUtils.isAlpha("abc")  = true
       StringUtils.isAlpha("ab2c") = false
       StringUtils.isAlpha("ab-c") = false
       
      Parameters:
      cs - the CharSequence to check, may be null
      Returns:
      true if only contains letters, and is non-null
      Since:
      3.0 Changed signature from isAlpha(String) to isAlpha(CharSequence), 3.0 Changed "" to return false and not true
    • isAlphanumeric

      public static boolean isAlphanumeric(String cs)
      Checks if the CharSequence contains only Unicode letters or digits.

      null will return false. An empty CharSequence (length()=0) will return false.

       StringUtils.isAlphanumeric(null)   = false
       StringUtils.isAlphanumeric("")     = false
       StringUtils.isAlphanumeric("  ")   = false
       StringUtils.isAlphanumeric("abc")  = true
       StringUtils.isAlphanumeric("ab c") = false
       StringUtils.isAlphanumeric("ab2c") = true
       StringUtils.isAlphanumeric("ab-c") = false
       
      Parameters:
      cs - the CharSequence to check, may be null
      Returns:
      true if only contains letters or digits, and is non-null
      Since:
      3.0 Changed signature from isAlphanumeric(String) to isAlphanumeric(CharSequence), 3.0 Changed "" to return false and not true
    • isNumeric

      public static boolean isNumeric(String cs)
      Checks if the CharSequence contains only Unicode digits. A decimal point is not a Unicode digit and returns false.

      null will return false. An empty CharSequence (length()=0) will return false.

      Note that the method does not allow for a leading sign, either positive or negative. Also, if a String passes the numeric test, it may still generate a NumberFormatException when parsed by Integer.parseInt or Long.parseLong, e.g. if the value is outside the range for int or long respectively.

       StringUtils.isNumeric(null)   = false
       StringUtils.isNumeric("")     = false
       StringUtils.isNumeric("  ")   = false
       StringUtils.isNumeric("123")  = true
       StringUtils.isNumeric("१२३")  = true
       StringUtils.isNumeric("12 3") = false
       StringUtils.isNumeric("ab2c") = false
       StringUtils.isNumeric("12-3") = false
       StringUtils.isNumeric("12.3") = false
       StringUtils.isNumeric("-123") = false
       StringUtils.isNumeric("+123") = false
       
      Parameters:
      cs - the CharSequence to check, may be null
      Returns:
      true if only contains digits, and is non-null
      Since:
      3.0 Changed signature from isNumeric(String) to isNumeric(CharSequence), 3.0 Changed "" to return false and not true
    • isAllLowerCase

      public static boolean isAllLowerCase(String cs)
      Checks if the CharSequence contains only lowercase characters.

      null will return false. An empty CharSequence (length()=0) will return false.

       StringUtils.isAllLowerCase(null)   = false
       StringUtils.isAllLowerCase("")     = false
       StringUtils.isAllLowerCase("  ")   = false
       StringUtils.isAllLowerCase("abc")  = true
       StringUtils.isAllLowerCase("abC")  = false
       StringUtils.isAllLowerCase("ab c") = false
       StringUtils.isAllLowerCase("ab1c") = false
       StringUtils.isAllLowerCase("ab/c") = false
       
      Parameters:
      cs - the CharSequence to check, may be null
      Returns:
      true if only contains lowercase characters, and is non-null
      Since:
      2.5, 3.0 Changed signature from isAllLowerCase(String) to isAllLowerCase(CharSequence)
    • isAllUpperCase

      public static boolean isAllUpperCase(String cs)
      Checks if the CharSequence contains only uppercase characters.

      null will return false. An empty String (length()=0) will return false.

       StringUtils.isAllUpperCase(null)   = false
       StringUtils.isAllUpperCase("")     = false
       StringUtils.isAllUpperCase("  ")   = false
       StringUtils.isAllUpperCase("ABC")  = true
       StringUtils.isAllUpperCase("aBC")  = false
       StringUtils.isAllUpperCase("A C")  = false
       StringUtils.isAllUpperCase("A1C")  = false
       StringUtils.isAllUpperCase("A/C")  = false
       
      Parameters:
      cs - the CharSequence to check, may be null
      Returns:
      true if only contains uppercase characters, and is non-null
      Since:
      2.5, 3.0 Changed signature from isAllUpperCase(String) to isAllUpperCase(CharSequence)
    • removeZeroDecimal

      public static String removeZeroDecimal(String str)
      Removes all trailing zero decimals from the given String, assuming all decimals are zero and any zero decimals actually exist.

      A null input String returns null.

      Parameters:
      str - the String to handle, may be null
      Returns:
      string without trailing zero decimals
    • abbreviate

      public static String abbreviate(String str, String abbrevMarker, int maxWidth)
      Abbreviates a String using ellipses. This will turn "Now is the time for all good men" into "Now is the time for..."

      Specifically:

      • If the number of characters in str is less than or equal to maxWidth, return str.
      • Else abbreviate it to (substring(str, 0, max-3) + "...").
      • If maxWidth is less than 4, throw an IllegalArgumentException.
      • In no case will it return a String of length greater than maxWidth.
       StringUtils.abbreviate(null, *)      = null
       StringUtils.abbreviate("", 4)        = ""
       StringUtils.abbreviate("abcdefg", 6) = "abc..."
       StringUtils.abbreviate("abcdefg", 7) = "abcdefg"
       StringUtils.abbreviate("abcdefg", 8) = "abcdefg"
       StringUtils.abbreviate("abcdefg", 4) = "a..."
       StringUtils.abbreviate("abcdefg", 3) = IllegalArgumentException
       
      Parameters:
      str - the String to check, may be null
      abbrevMarker - the String indicate abbreviation
      maxWidth - maximum length of result String, must be at least 4
      Returns:
      abbreviated String, null if null String input
      Throws:
      IllegalArgumentException - if the width is too small
      Since:
      2.0