Class StringKit

java.lang.Object
org.aoju.bus.core.toolkit.CharsKit
org.aoju.bus.core.toolkit.StringKit

public class StringKit extends CharsKit
字符串处理类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • StringKit

      public StringKit()
  • Method Details

    • isBlank

      public static boolean isBlank(Object obj)
      如果对象是字符串是否为空白,空白的定义如下: 1、为null 2、为不可见字符(如空格) 3、""
      Parameters:
      obj - 对象
      Returns:
      如果为字符串是否为空串
    • trim

      public static String[] trim(String[] array)
      字符串去空格
      Parameters:
      array - 数组
      Returns:
      数组
    • trimToEmpty

      public static String trimToEmpty(String text)
      删除字符串两端的控制字符(char <= 32),如果字符串在修剪后为空(""), 或者如果字符串为null,则返回空字符串("")
       StringKit.trimToEmpty(null)          = ""
       StringKit.trimToEmpty("")            = ""
       StringKit.trimToEmpty("     ")       = ""
       StringKit.trimToEmpty("abc")         = "abc"
       StringKit.trimToEmpty("    abc    ") = "abc"
       
      Parameters:
      text - 要被裁剪的字符串可能是空的
      Returns:
      如果null输入,则为空字符串
    • emptyIfString

      public static boolean emptyIfString(Object obj)
      如果对象是字符串是否为空串空的定义如下: 1、为null 2、为""
      Parameters:
      obj - 对象
      Returns:
      如果为字符串是否为空串
    • areNotEmpty

      public static boolean areNotEmpty(String... values)
    • toString

      public static String toString(Object obj)
      将对象转为字符串 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
      Parameters:
      obj - 对象
      Returns:
      字符串
    • toString

      public static String toString(Object obj, String charset)
      将对象转为字符串 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
      Parameters:
      obj - 对象
      charset - 字符集
      Returns:
      字符串
    • toString

      public static String toString(String text, String defaultStr)
      返回传入的字符串,如果字符串是null,则返回defaultStr的值
       StringKit.toString(null, "NULL")  = "NULL"
       StringKit.toString("", "NULL")    = ""
       StringKit.toString("bat", "NULL") = "bat"
       
      Parameters:
      text - 要检查的字符串可能为空
      defaultStr - 如果输入是null,返回的默认字符串可能是null
      Returns:
      传入的字符串,如果是null,则为默认值
      See Also:
    • toString

      public static String toString(Object obj, Charset charset)
      将对象转为字符串 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
      Parameters:
      obj - 对象
      charset - 字符集
      Returns:
      字符串
    • toString

      public static String toString(byte[] bytes, String charset)
      将byte数组转为字符串
      Parameters:
      bytes - byte数组
      charset - 字符集
      Returns:
      字符串
    • toString

      public static String toString(byte[] data, Charset charset)
      解码字节码
      Parameters:
      data - 字符串
      charset - 字符集,如果此字段为空,则解码的结果取决于平台
      Returns:
      解码后的字符串
    • toString

      public static String toString(Byte[] bytes, String charset)
      将Byte数组转为字符串
      Parameters:
      bytes - byte数组
      charset - 字符集
      Returns:
      字符串
    • toString

      public static String toString(Byte[] data, Charset charset)
      解码字节码
      Parameters:
      data - 字符串
      charset - 字符集,如果此字段为空,则解码的结果取决于平台
      Returns:
      解码后的字符串
    • toString

      public static String toString(ByteBuffer data, String charset)
      将编码的byteBuffer数据转换为字符串
      Parameters:
      data - 数据
      charset - 字符集,如果为空使用当前系统字符集
      Returns:
      字符串
    • toString

      public static String toString(ByteBuffer data, Charset charset)
      将编码的byteBuffer数据转换为字符串
      Parameters:
      data - 数据
      charset - 字符集,如果为空使用当前系统字符集
      Returns:
      字符串
    • toString

      public static String toString(String[] values)
      转换String数组成字符串格式
      Parameters:
      values - 字符数组
      Returns:
      字符串信息
    • toString

      public static String toString(Class<?>[] parameterTypes)
      转换Class数组成字符串格式
      Parameters:
      parameterTypes - 对象数组
      Returns:
      字符串信息
    • toStringOrNull

      public static String toStringOrNull(Object obj)
      调用对象的toString方法,null会返回null
      Parameters:
      obj - 对象
      Returns:
      字符串 or null
    • hasText

      public static boolean hasText(String text)
      检查给定的String是否包含实际的文本。 更具体地说,如果String不是null, 那么这个方法返回true,它的长度大于0,并且至少包含一个非空白字符
      Parameters:
      text - 要检查的String(可能是null)
      Returns:
      如果String不是null,那么它的长度大于0,并且不包含空格
    • hasLength

      public static boolean hasLength(String text)
      检查给定的String既不是null也不是长度为0.
      Parameters:
      text - 要检查的String(可能是null)
      Returns:
      如果String不是null,并且有长度,则为true
      See Also:
    • base64ToByte

      public static byte[] base64ToByte(String text)
      将base64字符串处理成String字节
      Parameters:
      text - base64的字符串
      Returns:
      原字节数据
    • base64ToString

      public static String base64ToString(String text)
      将base64字符串处理成String (用默认的String编码集)
      Parameters:
      text - base64的字符串
      Returns:
      可显示的字符串
    • base64ToString

      public static String base64ToString(String text, String charset)
      将base64字符串处理成String (用默认的String编码集)
      Parameters:
      text - base64的字符串
      charset - 编码格式(UTF-8/GBK)
      Returns:
      可显示的字符串
    • byteArrayToHex

      public static String byteArrayToHex(byte[] byteArray)
      将字节数组换成16进制的字符串
      Parameters:
      byteArray - 字节数组
      Returns:
      string
    • hexStringToByte

      public static byte[] hexStringToByte(String hexText)
      bytes字符串转换为Byte值 src Byte字符串,每个Byte之间没有分隔符
      Parameters:
      hexText - 字符串
      Returns:
      byte[]
    • toUnicode

      public static String toUnicode(char c)
      字符编码为Unicode形式
      Parameters:
      c - 被编码的字符
      Returns:
      Unicode字符串
      See Also:
    • toUnicode

      public static String toUnicode(int c)
      字符编码为Unicode形式
      Parameters:
      c - 被编码的字符
      Returns:
      Unicode字符串
      See Also:
    • toUnicode

      public static String toUnicode(String text)
      字符串编码为Unicode形式
      Parameters:
      text - 被编码的字符串
      Returns:
      Unicode字符串
    • toUnicode

      public static String toUnicode(String text, boolean isSkipAscii)
      字符串编码为Unicode形式
      Parameters:
      text - 被编码的字符串
      isSkipAscii - 是否跳过ASCII字符(只跳过可见字符)
      Returns:
      Unicode字符串
    • toUnicodeString

      public static String toUnicodeString(String text)
      Unicode字符串转为普通字符串 Unicode字符串的表现方式为:\\uXXXX
      Parameters:
      text - Unicode字符串
      Returns:
      普通字符串
    • sub

      public static String sub(String input, int fromIndex, int length)
      截取字符串,从指定位置开始,截取指定长度的字符串
      Parameters:
      input - 原始字符串
      fromIndex - 开始的index,包括
      length - 要截取的长度
      Returns:
      截取后的字符串
    • split

      public static String split(String text)
      切分字符串
      Parameters:
      text - 被切分的字符串
      Returns:
      字符串
    • split

      public static String split(String text, String separator, String reserve)
      切分字符串
      Parameters:
      text - 被切分的字符串
      separator - 分隔符
      reserve - 替换后的分隔符
      Returns:
      字符串
    • left

      public static String left(String text, int len)
      获取字符串中最左边的len字符
       StringKit.left(null, *)    = null
       StringKit.left(*, -ve)     = ""
       StringKit.left("", *)      = ""
       StringKit.left("abc", 0)   = ""
       StringKit.left("abc", 2)   = "ab"
       StringKit.left("abc", 4)   = "abc"
       
      Parameters:
      text - 要从中获取字符的字符串可能为空
      len - 所需字符串的长度
      Returns:
      最左边的字符,null如果输入为空字符串
    • right

      public static String right(String text, int len)
      获取字符串中最右边的len字符
       StringKit.right(null, *)    = null
       StringKit.right(*, -ve)     = ""
       StringKit.right("", *)      = ""
       StringKit.right("abc", 0)   = ""
       StringKit.right("abc", 2)   = "bc"
       StringKit.right("abc", 4)   = "abc"
       
      Parameters:
      text - 要从中获取字符的字符串可能为空
      len - 所需字符串的长度
      Returns:
      最右边的字符,null如果输入为空字符串
    • mid

      public static String mid(String text, int pos, int len)
      从字符串中间获取len字符.
       StringKit.mid(null, *, *)    = null
       StringKit.mid(*, *, -ve)     = ""
       StringKit.mid("", 0, *)      = ""
       StringKit.mid("abc", 0, 2)   = "ab"
       StringKit.mid("abc", 0, 4)   = "abc"
       StringKit.mid("abc", 2, 4)   = "c"
       StringKit.mid("abc", 4, 2)   = ""
       StringKit.mid("abc", -2, 2)  = "ab"
       
      Parameters:
      text - 要从中获取字符的字符串可能为空
      pos - 开始时的位置,负为零
      len - 所需字符串的长度
      Returns:
      中间的字符,null如果输入为空字符串
    • removeStart

      public static String removeStart(String text, String remove)
      删除指定字符串 是否在开始位置,否则返回源字符串
       StringKit.removeStart(null, *)                    = null
       StringKit.removeStart("", *)                      = ""
       StringKit.removeStart(*, null)                    = *
       StringKit.removeStart("www.domain.com", "www.")   = "domain.com"
       StringKit.removeStart("domain.com", "www.")       = "domain.com"
       StringKit.removeStart("www.domain.com", "domain") = "www.domain.com"
       StringKit.removeStart("abc", "")                  = "abc"
       
      Parameters:
      text - 要搜索的源字符串可能为空
      remove - 要搜索和删除的字符串可能为空
      Returns:
      如果找到,则删除字符串,如果输入为空字符串,则null
    • build

      public static String build(Object original, String middle, int prefixLength)
      构建新的字符串
      Parameters:
      original - 原始对象
      middle - 中间隐藏信息
      prefixLength - 前边信息长度
      Returns:
      构建后的新字符串
    • concat

      public static String concat(boolean isNullToEmpty, CharSequence... texts)
      连接多个字符串为一个
      Parameters:
      isNullToEmpty - 是否null转为""
      texts - 字符串数组
      Returns:
      连接后的字符串
    • swapCase

      public static String swapCase(String text)
      切换给定字符串中的大小写 大写转小写,小写转大写
       StringKit.swapCase(null)                 = null
       StringKit.swapCase("")                   = ""
       StringKit.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
       
      Parameters:
      text - 字符串
      Returns:
      交换后的字符串
    • fillBefore

      public static String fillBefore(String text, char filledChar, int len)
      将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串 字符填充于字符串前
      Parameters:
      text - 被填充的字符串
      filledChar - 填充的字符
      len - 填充长度
      Returns:
      填充后的字符串
    • fillAfter

      public static String fillAfter(String strVal, char charVal, int len)
      将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串 字符填充于字符串后
      Parameters:
      strVal - 被填充的字符串
      charVal - 填充的字符
      len - 填充长度
      Returns:
      填充后的字符串
    • fill

      public static String fill(String strVal, char charVal, int len, boolean isPre)
      将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串
      Parameters:
      strVal - 被填充的字符串
      charVal - 填充的字符
      len - 填充长度
      isPre - 是否填充在前
      Returns:
      填充后的字符串
    • fill

      public static String fill(int count, char charVal)
      输出指定长度字符
      Parameters:
      count - 长度
      charVal - 字符
      Returns:
      填充后的字符串
    • fill

      public static String fill(int count, String strVal)
      输出指定长度字符
      Parameters:
      count - 长度
      strVal - 字符
      Returns:
      填充后的字符串
    • getReader

      public static StringReader getReader(CharSequence text)
      获得StringReader
      Parameters:
      text - 字符串
      Returns:
      StringReader
    • getWriter

      public static StringWriter getWriter()
      获得StringWriter
      Returns:
      StringWriter
    • count

      public static Map<String,Long> count(String text, String separator)
      统计 字符串 中单词出现次数(不排序)
      Parameters:
      text - 字符串
      separator - 分隔符
      Returns:
      统计次数 如: {"hello":10}
    • count

      public static Map<String,Long> count(String text, String separator, boolean isValueDesc)
      统计 字符串 中单词出现次数(根据value排序)
      Parameters:
      text - 字符串
      separator - 分隔符
      isValueDesc - 是否倒叙排列
      Returns:
      统计次数 如: {"hello":10}
    • count

      public static Map<String,Long> count(List<String> list, String separator)
      统计list中单词出现次数(不排序)
      Parameters:
      list - list容器
      separator - 分隔符
      Returns:
      统计次数
    • count

      public static Map<String,Long> count(List<String> list, String separator, boolean isValueDesc)
      统计 字符串list 中单词出现次数(根据value排序)
      Parameters:
      list - list容器
      separator - 分隔符
      isValueDesc - 是否根据value倒叙排列
      Returns:
      统计次数
    • cleanText

      public static String cleanText(String txt)
      清理字符串,清理出某些不可见字符和一些sql特殊字符
      Parameters:
      txt - 文本
      Returns:
      {String}
    • upperCase

      public static String upperCase(String text)
      根据String.toUpperCase()将字符串转换为大写.
       StringKit.upperCase(null)  = null
       StringKit.upperCase("")    = ""
       StringKit.upperCase("aBc") = "ABC"
       
      Parameters:
      text - 字符串可以为空
      Returns:
      大写字符串null如果输入为空字符串
    • upperCase

      public static String upperCase(String text, Locale locale)
      根据String.toUpperCase()将字符串转换为大写
       StringKit.upperCase(null, Locale.ENGLISH)  = null
       StringKit.upperCase("", Locale.ENGLISH)    = ""
       StringKit.upperCase("aBc", Locale.ENGLISH) = "ABC"
       
      Parameters:
      text - 字符串可以为空
      locale - 定义案例转换规则的区域设置不能为空
      Returns:
      大写字符串null如果输入为空字符串
    • lowerCase

      public static String lowerCase(String text)
      根据String.toLowerCase()将字符串转换为小写
       StringKit.lowerCase(null)  = null
       StringKit.lowerCase("")    = ""
       StringKit.lowerCase("aBc") = "abc"
       
      Parameters:
      text - 字符串可以为空
      Returns:
      小写字符串null如果输入为空字符串
    • lowerCase

      public static String lowerCase(String text, Locale locale)
      根据String.toLowerCase()将字符串转换为小写
       StringKit.lowerCase(null, Locale.ENGLISH)  = null
       StringKit.lowerCase("", Locale.ENGLISH)    = ""
       StringKit.lowerCase("aBc", Locale.ENGLISH) = "abc"
       
      Parameters:
      text - 字符串可以为空
      locale - t定义案例转换规则的区域设置不能为空
      Returns:
      小写字符串null如果输入为空字符串
    • capitalize

      public static String capitalize(String text)
      Character.toTitleCase(int) 将第一个字符更改为标题大小写.其他字符没有改变
       StringKit.capitalize(null)  = null
       StringKit.capitalize("")    = ""
       StringKit.capitalize("cat") = "Cat"
       StringKit.capitalize("cAt") = "CAt"
       StringKit.capitalize("'cat'") = "'cat'"
       
      Parameters:
      text - 要大写的字符串可以为空
      Returns:
      大写字符串,null如果输入为空字符串
    • unCapitalize

      public static String unCapitalize(String text)
      取消字符串的大小写,将第一个字符改为小写。其他字符没有改变
       StringKit.uncapitalize(null)  = null
       StringKit.uncapitalize("")    = ""
       StringKit.uncapitalize("cat") = "cat"
       StringKit.uncapitalize("Cat") = "cat"
       StringKit.uncapitalize("CAT") = "cAT"
       
      Parameters:
      text - 要取消大写的字符串可以为空
      Returns:
      未大写的字符串,null如果输入为空字符串
    • sort

      public static String sort(String text)
      字符串按照字符排序方法
      Parameters:
      text - 排序字段
      Returns:
      String
    • similar

      public static double similar(String str1, String str2)
      计算两个字符串的相似度
      Parameters:
      str1 - 字符串1
      str2 - 字符串2
      Returns:
      相似度
    • similar

      public static String similar(String str1, String str2, int scale)
      计算两个字符串的相似度百分比
      Parameters:
      str1 - 字符串1
      str2 - 字符串2
      scale - 相似度
      Returns:
      相似度百分比
    • newLine

      public static String newLine(String content, int length)
      字符串按照指定长度换行
      Parameters:
      content - 字符内容
      length - 换行长度
      Returns:
      换行后的内容