SpringBoot的cn.hutool工具库

**

SpringBoot的cn.hutool工具库----强大的工具库

**1.注入依赖

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.6</version>
        </dependency>

2.最常用的core.util包

(1).StrUtil(因为都是静态方法,可以使用类名直接调用)
常用的方法:

           boolean  isBlank();

如果是null,空格,"",都判断为空,返回true。

 boolean isNotBlank(CharSequence str)

如果为非空字符串返回true,不能为null,也不能为空格,和""

boolean isEmpty(CharSequence str)

他判断是否为空的定义是:是否为null和"" 。如果是不可见的字符(空格),则不为空。

boolean isNotEmpty(CharSequence str)

判断是否为非空,不为null和不为""

注意:这里就可以知道,Blank和Empty的区别:是否包含空字符串(空格)

String trim(CharSequence str)

去除头尾部的空白字符串,如果字符串本来就是空的话,那么使用该方法之后,该字符串仍然是空。

boolean contains(CharSequence str, char searchChar)

指定字符是否在字符串中出现过。

boolean contains(CharSequence str, CharSequence searchStr)

指定字符串是否在字符串中出现过

String[] splitToArray(CharSequence str, char separator)

切分字符串,以separator为分割字符串进行分割。
当然也有切分int数组,long等。

List<String> split(CharSequence str, char separator)

切分字符串,返回切分后的集合。

**

3.部分后台源码

**



/**
 * 字符串工具类

public class StrUtil {

	// ------------------------------------------------------------------------ Blank

	/**
	 * 字符串是否为空白 空白的定义如下: 
* 1、为null
* 2、为不可见字符(如空格)
* 3、""
* * @param str 被检测的字符串 * @return 是否为空 */
public static boolean isBlank(CharSequence str) { int length; if ((str == null) || ((length = str.length()) == 0)) { return true; } for (int i = 0; i < length; i++) { // 只要有一个非空字符即为非空字符串 if (false == CharUtil.isBlankChar(str.charAt(i))) { return false; } } return true; } /** * 如果对象是字符串是否为空白,空白的定义如下:
* 1、为null
* 2、为不可见字符(如空格)
* 3、""
* * @param obj 对象 * @return 如果为字符串是否为空串 * @since 3.3.0 */
public static boolean isBlankIfStr(Object obj) { if (null == obj) { return true; } else if (obj instanceof CharSequence) { return isBlank((CharSequence) obj); } return false; } /** * 字符串是否为非空白,非空白的定义如下:
* 1、不为null
* 2、不为不可见字符(如空格)
* 3、不为""
* * @param str 被检测的字符串 * @return 是否为非空 */
public static boolean isNotBlank(CharSequence str) { return false == isBlank(str); } /** * 是否包含空字符串 * * @param strs 字符串列表 * @return 是否包含空字符串 */ public static boolean hasBlank(CharSequence... strs) { if (ArrayUtil.isEmpty(strs)) { return true; } for (CharSequence str : strs) { if (isBlank(str)) { return true; } } return false; } /** * 给定所有字符串是否为空白 * * @param strs 字符串 * @return 所有字符串是否为空白 */ public static boolean isAllBlank(CharSequence... strs) { if (ArrayUtil.isEmpty(strs)) { return true; } for (CharSequence str : strs) { if (isNotBlank(str)) { return false; } } return true; } // ------------------------------------------------------------------------ Empty /** * 字符串是否为空,空的定义如下:
* 1、为null
* 2、为""
* * @param str 被检测的字符串 * @return 是否为空 */
public static boolean isEmpty(CharSequence str) { return str == null || str.length() == 0; } /** * 如果对象是字符串是否为空串空的定义如下:
* 1、为null
* 2、为""
* * @param obj 对象 * @return 如果为字符串是否为空串 * @since 3.3.0 */
public static boolean isEmptyIfStr(Object obj) { if (null == obj) { return true; } else if (obj instanceof CharSequence) { return 0 == ((CharSequence) obj).length(); } return false; } /** * 字符串是否为非空白,非空白的定义如下:
* 1、不为null
* 2、不为""
* * @param str 被检测的字符串 * @return 是否为非空 */
public static boolean isNotEmpty(CharSequence str) { return false == isEmpty(str); } /** * 当给定字符串为null时,转换为Empty * * @param str 被检查的字符串 * @return 原字符串或者空串 * @see #nullToEmpty(CharSequence) * @since 4.6.3 */ public static String emptyIfNull(CharSequence str) { return nullToEmpty(str); } /** * 当给定字符串为null时,转换为Empty * * @param str 被转换的字符串 * @return 转换后的字符串 */ public static String nullToEmpty(CharSequence str) { return nullToDefault(str, EMPTY); } /** * 如果字符串是null,则返回指定默认字符串,否则返回字符串本身。 * *
	 * nullToDefault(null, "default")  = "default"
	 * nullToDefault("", "default")    = ""
	 * nullToDefault("  ", "default")  = "  "
	 * nullToDefault("bat", "default") = "bat"
	 * 
* * @param str 要转换的字符串 * @param defaultStr 默认字符串 * @return 字符串本身或指定的默认字符串 */
public static String nullToDefault(CharSequence str, String defaultStr) { return (str == null) ? defaultStr : str.toString(); } /** * 如果字符串是null或者"",则返回指定默认字符串,否则返回字符串本身。 * *
	 * emptyToDefault(null, "default")  = "default"
	 * emptyToDefault("", "default")    = "default"
	 * emptyToDefault("  ", "default")  = "  "
	 * emptyToDefault("bat", "default") = "bat"
	 * 
* * @param str 要转换的字符串 * @param defaultStr 默认字符串 * @return 字符串本身或指定的默认字符串 * @since 4.1.0 */
public static String emptyToDefault(CharSequence str, String defaultStr) { return isEmpty(str) ? defaultStr : str.toString(); } /** * 如果字符串是null或者""或者空白,则返回指定默认字符串,否则返回字符串本身。 * *
	 * emptyToDefault(null, "default")  = "default"
	 * emptyToDefault("", "default")    = "default"
	 * emptyToDefault("  ", "default")  = "default"
	 * emptyToDefault("bat", "default") = "bat"
	 * 
* * @param str 要转换的字符串 * @param defaultStr 默认字符串 * @return 字符串本身或指定的默认字符串 * @since 4.1.0 */
public static String blankToDefault(CharSequence str, String defaultStr) { return isBlank(str) ? defaultStr : str.toString(); } /** * 当给定字符串为空字符串时,转换为null * * @param str 被转换的字符串 * @return 转换后的字符串 */ public static String emptyToNull(CharSequence str) { return isEmpty(str) ? null : str.toString(); } /** * 是否包含空字符串 * * @param strs 字符串列表 * @return 是否包含空字符串 */ public static boolean hasEmpty(CharSequence... strs) { if (ArrayUtil.isEmpty(strs)) { return true; } for (CharSequence str : strs) { if (isEmpty(str)) { return true; } } return false; } /** * 是否全部为空字符串 * * @param strs 字符串列表 * @return 是否全部为空字符串 */ public static boolean isAllEmpty(CharSequence... strs) { if (ArrayUtil.isEmpty(strs)) { return true; } for (CharSequence str : strs) { if (isNotEmpty(str)) { return false; } } return true; } /** * 是否存都不为{@code null}或空对象,通过{@link StrUtil#hasEmpty(CharSequence...)} 判断元素 * * @param args 被检查的对象,一个或者多个 * @return 是否都不为空 * @since 5.3.6 */ public static boolean isAllNotEmpty(CharSequence... args) { return false == hasEmpty(args); } /** * 是否存都不为{@code null}或空对象或空白符的对象,通过{@link StrUtil#hasBlank(CharSequence...)} 判断元素 * * @param args 被检查的对象,一个或者多个 * @return 是否都不为空 * @since 5.3.6 */ public static boolean isAllNotBlank(CharSequence... args) { return false == hasBlank(args); } /** * 检查字符串是否为null、“null”、“undefined” * * @param str 被检查的字符串 * @return 是否为null、“null”、“undefined” * @since 4.0.10 */ public static boolean isNullOrUndefined(CharSequence str) { if (null == str) { return true; } return isNullOrUndefinedStr(str); } /** * 检查字符串是否为null、“”、“null”、“undefined” * * @param str 被检查的字符串 * @return 是否为null、“”、“null”、“undefined” * @since 4.0.10 */ public static boolean isEmptyOrUndefined(CharSequence str) { if (isEmpty(str)) { return true; } return isNullOrUndefinedStr(str); } /** * 检查字符串是否为null、空白串、“null”、“undefined” * * @param str 被检查的字符串 * @return 是否为null、空白串、“null”、“undefined” * @since 4.0.10 */ public static boolean isBlankOrUndefined(CharSequence str) { if (isBlank(str)) { return true; } return isNullOrUndefinedStr(str); } /** * 是否为“null”、“undefined”,不做空指针检查 * * @param str 字符串 * @return 是否为“null”、“undefined” */ private static boolean isNullOrUndefinedStr(CharSequence str) { String strString = str.toString().trim(); return NULL.equals(strString) || "undefined".equals(strString); } // ------------------------------------------------------------------------ Trim /** * 除去字符串头尾部的空白,如果字符串是null,依然返回null。 * *

* 注意,和String.trim不同,此方法使用NumberUtil.isBlankChar 来判定空白, 因而可以除去英文字符集之外的其它空白,如中文空格。 * *

	 * trim(null)          = null
	 * trim("")            = ""
	 * trim("     ")       = ""
	 * trim("abc")         = "abc"
	 * trim("    abc    ") = "abc"
	 * 
* * @param str 要处理的字符串 * @return 除去头尾空白的字符串,如果原字串为null,则返回null */
public static String trim(CharSequence str) { return (null == str) ? null : trim(str, 0); } /** * 给定字符串数组全部做去首尾空格 * * @param strs 字符串数组 */ public static void trim(String[] strs) { if (null == strs) { return; } String str; for (int i = 0; i < strs.length; i++) { str = strs[i]; if (null != str) { strs[i] = str.trim(); } } } /** * 除去字符串头尾部的空白,如果字符串是{@code null},返回""。 * *
	 * StrUtil.trimToEmpty(null)          = ""
	 * StrUtil.trimToEmpty("")            = ""
	 * StrUtil.trimToEmpty("     ")       = ""
	 * StrUtil.trimToEmpty("abc")         = "abc"
	 * StrUtil.trimToEmpty("    abc    ") = "abc"
	 * 
* * @param str 字符串 * @return 去除两边空白符后的字符串, 如果为null返回"" * @since 3.1.1 */
public static String trimToEmpty(CharSequence str) { return str == null ? EMPTY : trim(str); } /** * 除去字符串头尾部的空白,如果字符串是{@code null},返回""。 * *
	 * StrUtil.trimToNull(null)          = null
	 * StrUtil.trimToNull("")            = null
	 * StrUtil.trimToNull("     ")       = null
	 * StrUtil.trimToNull("abc")         = "abc"
	 * StrUtil.trimToEmpty("    abc    ") = "abc"
	 * 
* * @param str 字符串 * @return 去除两边空白符后的字符串, 如果为空返回null * @since 3.2.1 */
public static String trimToNull(CharSequence str) { final String trimStr = trim(str); return EMPTY.equals(trimStr) ? null : trimStr; } /** * 除去字符串头部的空白,如果字符串是null,则返回null。 * *

* 注意,和String.trim不同,此方法使用CharUtil.isBlankChar 来判定空白, 因而可以除去英文字符集之外的其它空白,如中文空格。 * *

	 * trimStart(null)         = null
	 * trimStart("")           = ""
	 * trimStart("abc")        = "abc"
	 * trimStart("  abc")      = "abc"
	 * trimStart("abc  ")      = "abc  "
	 * trimStart(" abc ")      = "abc "
	 * 
* * @param str 要处理的字符串 * @return 除去空白的字符串,如果原字串为null或结果字符串为"",则返回 null */
public static String trimStart(CharSequence str) { return trim(str, -1); } /** * 除去字符串尾部的空白,如果字符串是null,则返回null。 * *

* 注意,和String.trim不同,此方法使用CharUtil.isBlankChar 来判定空白, 因而可以除去英文字符集之外的其它空白,如中文空格。 * *

	 * trimEnd(null)       = null
	 * trimEnd("")         = ""
	 * trimEnd("abc")      = "abc"
	 * trimEnd("  abc")    = "  abc"
	 * trimEnd("abc  ")    = "abc"
	 * trimEnd(" abc ")    = " abc"
	 * 
* * @param str 要处理的字符串 * @return 除去空白的字符串,如果原字串为null或结果字符串为"",则返回 null */
public static String trimEnd(CharSequence str) { return trim(str, 1); } /** * 除去字符串头尾部的空白符,如果字符串是null,依然返回null。 * * @param str 要处理的字符串 * @param mode -1表示trimStart,0表示trim全部, 1表示trimEnd * @return 除去指定字符后的的字符串,如果原字串为null,则返回null */ public static String trim(CharSequence str, int mode) { if (str == null) { return null; } int length = str.length(); int start = 0; int end = length; // 扫描字符串头部 if (mode <= 0) { while ((start < end) && (CharUtil.isBlankChar(str.charAt(start)))) { start++; } } // 扫描字符串尾部 if (mode >= 0) { while ((start < end) && (CharUtil.isBlankChar(str.charAt(end - 1)))) { end--; } } if ((start > 0) || (end < length)) { return str.toString().substring(start, end); } return str.toString(); } /** * 字符串是否以给定字符开始 * * @param str 字符串 * @param c 字符 * @return 是否开始 */ public static boolean startWith(CharSequence str, char c) { return c == str.charAt(0); } /** * 是否以指定字符串开头
* 如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false * * @param str 被监测字符串 * @param prefix 开头字符串 * @param isIgnoreCase 是否忽略大小写 * @return 是否以指定字符串开头 */
public static boolean startWith(CharSequence str, CharSequence prefix, boolean isIgnoreCase) { if (null == str || null == prefix) { return null == str && null == prefix; } if (isIgnoreCase) { return str.toString().toLowerCase().startsWith(prefix.toString().toLowerCase()); } else { return str.toString().startsWith(prefix.toString()); } } /** * 是否以指定字符串开头 * * @param str 被监测字符串 * @param prefix 开头字符串 * @return 是否以指定字符串开头 */ public static boolean startWith(CharSequence str, CharSequence prefix) { return startWith(str, prefix, false); } /** * 是否以指定字符串开头,忽略大小写 * * @param str 被监测字符串 * @param prefix 开头字符串 * @return 是否以指定字符串开头 */ public static boolean startWithIgnoreCase(CharSequence str, CharSequence prefix) { return startWith(str, prefix, true); } /** * 给定字符串是否以任何一个字符串开始
* 给定字符串和数组为空都返回false * * @param str 给定字符串 * @param prefixes 需要检测的开始字符串 * @return 给定字符串是否以任何一个字符串开始 * @since 3.0.6 */
public static boolean startWithAny(CharSequence str, CharSequence... prefixes) { if (isEmpty(str) || ArrayUtil.isEmpty(prefixes)) { return false; } for (CharSequence suffix : prefixes) { if (startWith(str, suffix, false)) { return true; } } return false; } /** * 字符串是否以给定字符结尾 * * @param str 字符串 * @param c 字符 * @return 是否结尾 */ public static boolean endWith(CharSequence str, char c) { return c == str.charAt(str.length() - 1); } /** * 是否以指定字符串结尾
* 如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false * * @param str 被监测字符串 * @param suffix 结尾字符串 * @param isIgnoreCase 是否忽略大小写 * @return 是否以指定字符串结尾 */
public static boolean endWith(CharSequence str, CharSequence suffix, boolean isIgnoreCase) { if (null == str || null == suffix) { return null == str && null == suffix; } if (isIgnoreCase) { return str.toString().toLowerCase().endsWith(suffix.toString().toLowerCase()); } else { return str.toString().endsWith(suffix.toString()); } } /** * 是否以指定字符串结尾 * * @param str 被监测字符串 * @param suffix 结尾字符串 * @return 是否以指定字符串结尾 */ public static boolean endWith(CharSequence str, CharSequence suffix) { return endWith(str, suffix, false); } /** * 是否以指定字符串结尾,忽略大小写 * * @param str 被监测字符串 * @param suffix 结尾字符串 * @return 是否以指定字符串结尾 */ public static boolean endWithIgnoreCase(CharSequence str, CharSequence suffix) { return endWith(str, suffix, true); } /** * 给定字符串是否以任何一个字符串结尾
* 给定字符串和数组为空都返回false * * @param str 给定字符串 * @param suffixes 需要检测的结尾字符串 * @return 给定字符串是否以任何一个字符串结尾 * @since 3.0.6 */
public static boolean endWithAny(CharSequence str, CharSequence... suffixes) { if (isEmpty(str) || ArrayUtil.isEmpty(suffixes)) { return false; } for (CharSequence suffix : suffixes) { if (endWith(str, suffix, false)) { return true; } } return false; } /** * 指定字符是否在字符串中出现过 * * @param str 字符串 * @param searchChar 被查找的字符 * @return 是否包含 * @since 3.1.2 */ public static boolean contains(CharSequence str, char searchChar) { return indexOf(str, searchChar) > -1; } /** * 指定字符串是否在字符串中出现过 * * @param str 字符串 * @param searchStr 被查找的字符串 * @return 是否包含 * @since 5.1.1 */ public static boolean contains(CharSequence str, CharSequence searchStr) { if (null == str || null == searchStr) { return false; } return str.toString().contains(searchStr); } /** * 查找指定字符串是否包含指定字符串列表中的任意一个字符串 * * @param str 指定字符串 * @param testStrs 需要检查的字符串数组 * @return 是否包含任意一个字符串 * @since 3.2.0 */ public static boolean containsAny(CharSequence str, CharSequence... testStrs) { return null != getContainsStr(str, testStrs); } /** * 查找指定字符串是否包含指定字符列表中的任意一个字符 * * @param str 指定字符串 * @param testChars 需要检查的字符数组 * @return 是否包含任意一个字符 * @since 4.1.11 */ public static boolean containsAny(CharSequence str, char... testChars) { if (false == isEmpty(str)) { int len = str.length(); for (int i = 0; i < len; i++) { if (ArrayUtil.contains(testChars, str.charAt(i))) { return true; } } } return false; } /** * 检查指定字符串中是否只包含给定的字符 * * @param str 字符串 * @param testChars 检查的字符 * @return 字符串含有非检查的字符,返回false * @since 4.4.1 */ public static boolean containsOnly(CharSequence str, char... testChars) { if (false == isEmpty(str)) { int len = str.length(); for (int i = 0; i < len; i++) { if (false == ArrayUtil.contains(testChars, str.charAt(i))) { return false; } } } return true; } /** * 给定字符串是否包含空白符(空白符包括空格、制表符、全角空格和不间断空格)
* 如果给定字符串为null或者"",则返回false * * @param str 字符串 * @return 是否包含空白符 * @since 4.0.8 */
public static boolean containsBlank(CharSequence str) { if (null == str) { return false; } final int length = str.length(); if (0 == length) { return false; } for (int i = 0; i < length; i += 1) { if (CharUtil.isBlankChar(str.charAt(i))) { return true; } } return false; } /** * 查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串 * * @param str 指定字符串 * @param testStrs 需要检查的字符串数组 * @return 被包含的第一个字符串 * @since 3.2.0 */ public static String getContainsStr(CharSequence str, CharSequence... testStrs) { if (isEmpty(str) || ArrayUtil.isEmpty(testStrs)) { return null; } for (CharSequence checkStr : testStrs) { if (str.toString().contains(checkStr)) { return checkStr.toString(); } } return null; } /** * 是否包含特定字符,忽略大小写,如果给定两个参数都为null,返回true * * @param str 被检测字符串 * @param testStr 被测试是否包含的字符串 * @return 是否包含 */ public static boolean containsIgnoreCase(CharSequence str, CharSequence testStr) { if (null == str) { // 如果被监测字符串和 return null == testStr; } return str.toString().toLowerCase().contains(testStr.toString().toLowerCase()); } /** * 查找指定字符串是否包含指定字符串列表中的任意一个字符串
* 忽略大小写 * * @param str 指定字符串 * @param testStrs 需要检查的字符串数组 * @return 是否包含任意一个字符串 * @since 3.2.0 */
public static boolean containsAnyIgnoreCase(CharSequence str, CharSequence... testStrs) { return null != getContainsStrIgnoreCase(str, testStrs); } /** * 查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串
* 忽略大小写 * * @param str 指定字符串 * @param testStrs 需要检查的字符串数组 * @return 被包含的第一个字符串 * @since 3.2.0 */
public static String getContainsStrIgnoreCase(CharSequence str, CharSequence... testStrs) { if (isEmpty(str) || ArrayUtil.isEmpty(testStrs)) { return null; } for (CharSequence testStr : testStrs) { if (containsIgnoreCase(str, testStr)) { return testStr.toString(); } } return null; } /** * 获得set或get或is方法对应的标准属性名
* 例如:setName 返回 name * *
	 * getName =》name
	 * setName =》name
	 * isName  =》name
	 * 
* * @param getOrSetMethodName Get或Set方法名 * @return 如果是set或get方法名,返回field, 否则null */
public static String getGeneralField(CharSequence getOrSetMethodName) { final String getOrSetMethodNameStr = getOrSetMethodName.toString(); if (getOrSetMethodNameStr.startsWith("get") || getOrSetMethodNameStr.startsWith("set")) { return removePreAndLowerFirst(getOrSetMethodName, 3); } else if (getOrSetMethodNameStr.startsWith("is")) { return removePreAndLowerFirst(getOrSetMethodName, 2); } return null; } /** * 生成set方法名
* 例如:name 返回 setName * * @param fieldName 属性名 * @return setXxx */
public static String genSetter(CharSequence fieldName) { return upperFirstAndAddPre(fieldName, "set"); } /** * 生成get方法名 * * @param fieldName 属性名 * @return getXxx */ public static String genGetter(CharSequence fieldName) { return upperFirstAndAddPre(fieldName, "get"); } /** * 移除字符串中所有给定字符串
* 例:removeAll("aa-bb-cc-dd", "-") =》 aabbccdd * * @param str 字符串 * @param strToRemove 被移除的字符串 * @return 移除后的字符串 */
public static String removeAll(CharSequence str, CharSequence strToRemove) { if (isEmpty(str)) { return str(str); } return str.toString().replace(strToRemove, EMPTY); } /** * 去除字符串中指定的多个字符,如有多个则全部去除 * * @param str 字符串 * @param chars 字符列表 * @return 去除后的字符 * @since 4.2.2 */ public static String removeAll(CharSequence str, char... chars) { if (null == str || ArrayUtil.isEmpty(chars)) { return str(str); } final int len = str.length(); if (0 == len) { return str(str); } final StringBuilder builder = builder(len); char c; for (int i = 0; i < len; i++) { c = str.charAt(i); if (false == ArrayUtil.contains(chars, c)) { builder.append(c); } } return builder.toString(); } /** * 去除所有换行符,包括: * *
	 * 1. \r
	 * 1. \n
	 * 
* * @param str 字符串 * @return 处理后的字符串 * @since 4.2.2 */
public static String removeAllLineBreaks(CharSequence str) { return removeAll(str, C_CR, C_LF); } /** * 去掉首部指定长度的字符串并将剩余字符串首字母小写
* 例如:str=setName, preLength=3 =》 return name * * @param str 被处理的字符串 * @param preLength 去掉的长度 * @return 处理后的字符串,不符合规范返回null */
public static String removePreAndLowerFirst(CharSequence str, int preLength) { if (str == null) { return null; } if (str.length() > preLength) { char first = Character.toLowerCase(str.charAt(preLength)); if (str.length() > preLength + 1) { return first + str.toString().substring(preLength + 1); } return String.valueOf(first); } else { return str.toString(); } } /** * 去掉首部指定长度的字符串并将剩余字符串首字母小写
* 例如:str=setName, prefix=set =》 return name * * @param str 被处理的字符串 * @param prefix 前缀 * @return 处理后的字符串,不符合规范返回null */
public static String removePreAndLowerFirst(CharSequence str, CharSequence prefix) { return lowerFirst(removePrefix(str, prefix)); } /** * 原字符串首字母大写并在其首部添加指定字符串 例如:str=name, preString=get =》 return getName * * @param str 被处理的字符串 * @param preString 添加的首部 * @return 处理后的字符串 */ public static String upperFirstAndAddPre(CharSequence str, String preString) { if (str == null || preString == null) { return null; } return preString + upperFirst(str); } /** * 大写首字母
* 例如:str = name, return Name * * @param str 字符串 * @return 字符串 */
public static String upperFirst(CharSequence str) { if (null == str) { return null; } if (str.length() > 0) { char firstChar = str.charAt(0); if (Character.isLowerCase(firstChar)) { return Character.toUpperCase(firstChar) + subSuf(str, 1); } } return str.toString(); } /** * 小写首字母
* 例如:str = Name, return name * * @param str 字符串 * @return 字符串 */
public static String lowerFirst(CharSequence str) { if (null == str) { return null; } if (str.length() > 0) { char firstChar = str.charAt(0); if (Character.isUpperCase(firstChar)) { return Character.toLowerCase(firstChar) + subSuf(str, 1); } } return str.toString(); } /** * 去掉指定前缀 * * @param str 字符串 * @param prefix 前缀 * @return 切掉后的字符串,若前缀不是 preffix, 返回原字符串 */ public static String removePrefix(CharSequence str, CharSequence prefix) { if (isEmpty(str) || isEmpty(prefix)) { return str(str); } final String str2 = str.toString(); if (str2.startsWith(prefix.toString())) { return subSuf(str2, prefix.length());// 截取后半段 } return str2; } /** * 忽略大小写去掉指定前缀 * * @param str 字符串 * @param prefix 前缀 * @return 切掉后的字符串,若前缀不是 prefix, 返回原字符串 */ public static String removePrefixIgnoreCase(CharSequence str, CharSequence prefix) { if (isEmpty(str) || isEmpty(prefix)) { return str(str); } final String str2 = str.toString(); if (str2.toLowerCase().startsWith(prefix.toString().toLowerCase())) { return subSuf(str2, prefix.length());// 截取后半段 } return str2; } /** * 去掉指定后缀 * * @param str 字符串 * @param suffix 后缀 * @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串 */ public static String removeSuffix(CharSequence str, CharSequence suffix) { if (isEmpty(str) || isEmpty(suffix)) { return str(str); } final String str2 = str.toString(); if (str2.endsWith(suffix.toString())) { return subPre(str2, str2.length() - suffix.length());// 截取前半段 } return str2; } /** * 去掉指定后缀,并小写首字母 * * @param str 字符串 * @param suffix 后缀 * @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串 */ public static String removeSufAndLowerFirst(CharSequence str, CharSequence suffix) { return lowerFirst(removeSuffix(str, suffix)); } /** * 忽略大小写去掉指定后缀 * * @param str 字符串 * @param suffix 后缀 * @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串 */ public static String removeSuffixIgnoreCase(CharSequence str, CharSequence suffix) { if (isEmpty(str) || isEmpty(suffix)) { return str(str); } final String str2 = str.toString(); if (str2.toLowerCase().endsWith(suffix.toString().toLowerCase())) { return subPre(str2, str2.length() - suffix.length()); } return str2; } /** * 去除两边的指定字符串 * * @param str 被处理的字符串 * @param prefixOrSuffix 前缀或后缀 * @return 处理后的字符串 * @since 3.1.2 */ public static String strip(CharSequence str, CharSequence prefixOrSuffix) { if (equals(str, prefixOrSuffix)) { // 对于去除相同字符的情况单独处理 return EMPTY; } return strip(str, prefixOrSuffix, prefixOrSuffix); } /** * 去除两边的指定字符串 * * @param str 被处理的字符串 * @param prefix 前缀 * @param suffix 后缀 * @return 处理后的字符串 * @since 3.1.2 */ public static String strip(CharSequence str, CharSequence prefix, CharSequence suffix) { if (isEmpty(str)) { return str(str); } int from = 0; int to = str.length(); String str2 = str.toString(); if (startWith(str2, prefix)) { from = prefix.length(); } if (endWith(str2, suffix)) { to -= suffix.length(); } return str2.substring(Math.min(from, to), Math.max(from, to)); } /** * 去除两边的指定字符串,忽略大小写 * * @param str 被处理的字符串 * @param prefixOrSuffix 前缀或后缀 * @return 处理后的字符串 * @since 3.1.2 */ public static String stripIgnoreCase(CharSequence str, CharSequence prefixOrSuffix) { return stripIgnoreCase(str, prefixOrSuffix, prefixOrSuffix); } /** * 去除两边的指定字符串,忽略大小写 * * @param str 被处理的字符串 * @param prefix 前缀 * @param suffix 后缀 * @return 处理后的字符串 * @since 3.1.2 */ public static String stripIgnoreCase(CharSequence str, CharSequence prefix, CharSequence suffix) { if (isEmpty(str)) { return str(str); } int from = 0; int to = str.length(); String str2 = str.toString(); if (startWithIgnoreCase(str2, prefix)) { from = prefix.length(); } if (endWithIgnoreCase(str2, suffix)) { to -= suffix.length(); } return str2.substring(from, to); } /** * 如果给定字符串不是以prefix开头的,在开头补充 prefix * * @param str 字符串 * @param prefix 前缀 * @return 补充后的字符串 */ public static String addPrefixIfNot(CharSequence str, CharSequence prefix) { if (isEmpty(str) || isEmpty(prefix)) { return str(str); } final String str2 = str.toString(); final String prefix2 = prefix.toString(); if (false == str2.startsWith(prefix2)) { return prefix2.concat(str2); } return str2; } /** * 如果给定字符串不是以suffix结尾的,在尾部补充 suffix * * @param str 字符串 * @param suffix 后缀 * @return 补充后的字符串 */ public static String addSuffixIfNot(CharSequence str, CharSequence suffix) { if (isEmpty(str) || isEmpty(suffix)) { return str(str); } final String str2 = str.toString(); final String suffix2 = suffix.toString(); if (false == str2.endsWith(suffix2)) { return str2.concat(suffix2); } return str2; } /** * 清理空白字符 * * @param str 被清理的字符串 * @return 清理后的字符串 */ public static String cleanBlank(CharSequence str) { if (str == null) { return null; } int len = str.length(); final StringBuilder sb = new StringBuilder(len); char c; for (int i = 0; i < len; i++) { c = str.charAt(i); if (false == CharUtil.isBlankChar(c)) { sb.append(c); } } return sb.toString(); } // ------------------------------------------------------------------------------ Split /** * 切分字符串 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @return 切分后的数组 */ public static String[] splitToArray(CharSequence str, char separator) { return splitToArray(str, separator, 0); } /** * 切分字符串为long数组 * * @param str 被切分的字符串 * @param separator 分隔符 * @return 切分后long数组 * @since 4.0.6 */ public static long[] splitToLong(CharSequence str, char separator) { return Convert.convert(long[].class, splitTrim(str, separator)); } /** * 切分字符串为long数组 * * @param str 被切分的字符串 * @param separator 分隔符字符串 * @return 切分后long数组 * @since 4.0.6 */ public static long[] splitToLong(CharSequence str, CharSequence separator) { return Convert.convert(long[].class, splitTrim(str, separator)); } /** * 切分字符串为int数组 * * @param str 被切分的字符串 * @param separator 分隔符 * @return 切分后long数组 * @since 4.0.6 */ public static int[] splitToInt(CharSequence str, char separator) { return Convert.convert(int[].class, splitTrim(str, separator)); } /** * 切分字符串为int数组 * * @param str 被切分的字符串 * @param separator 分隔符字符串 * @return 切分后long数组 * @since 4.0.6 */ public static int[] splitToInt(CharSequence str, CharSequence separator) { return Convert.convert(int[].class, splitTrim(str, separator)); } /** * 切分字符串
* a#b#c =》 [a,b,c]
* a##b#c =》 [a,"",b,c] * * @param str 被切分的字符串 * @param separator 分隔符字符 * @return 切分后的集合 */
public static List<String> split(CharSequence str, char separator) { return split(str, separator, 0); } /** * 切分字符串 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param limit 限制分片数 * @return 切分后的数组 */ public static String[] splitToArray(CharSequence str, char separator, int limit) { if (null == str) { return new String[]{}; } return StrSpliter.splitToArray(str.toString(), separator, limit, false, false); } /** * 切分字符串,不去除切分后每个元素两边的空白符,不去除空白项 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param limit 限制分片数,-1不限制 * @return 切分后的集合 */ public static List<String> split(CharSequence str, char separator, int limit) { return split(str, separator, limit, false, false); } /** * 切分字符串,去除切分后每个元素两边的空白符,去除空白项 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @return 切分后的集合 * @since 3.1.2 */ public static List<String> splitTrim(CharSequence str, char separator) { return splitTrim(str, separator, -1); } /** * 切分字符串,去除切分后每个元素两边的空白符,去除空白项 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @return 切分后的集合 * @since 3.2.0 */ public static List<String> splitTrim(CharSequence str, CharSequence separator) { return splitTrim(str, separator, -1); } /** * 切分字符串,去除切分后每个元素两边的空白符,去除空白项 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param limit 限制分片数,-1不限制 * @return 切分后的集合 * @since 3.1.0 */ public static List<String> splitTrim(CharSequence str, char separator, int limit) { return split(str, separator, limit, true, true); } /** * 切分字符串,去除切分后每个元素两边的空白符,去除空白项 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param limit 限制分片数,-1不限制 * @return 切分后的集合 * @since 3.2.0 */ public static List<String> splitTrim(CharSequence str, CharSequence separator, int limit) { return split(str, separator, limit, true, true); } /** * 切分字符串,不限制分片数量 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param isTrim 是否去除切分字符串后每个元素两边的空格 * @param ignoreEmpty 是否忽略空串 * @return 切分后的集合 * @since 3.0.8 */ public static List<String> split(CharSequence str, char separator, boolean isTrim, boolean ignoreEmpty) { return split(str, separator, 0, isTrim, ignoreEmpty); } /** * 切分字符串 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param limit 限制分片数,-1不限制 * @param isTrim 是否去除切分字符串后每个元素两边的空格 * @param ignoreEmpty 是否忽略空串 * @return 切分后的集合 * @since 3.0.8 */ public static List<String> split(CharSequence str, char separator, int limit, boolean isTrim, boolean ignoreEmpty) { if (null == str) { return new ArrayList<>(0); } return StrSpliter.split(str.toString(), separator, limit, isTrim, ignoreEmpty); } /** * 切分字符串 * * @param str 被切分的字符串 * @param separator 分隔符字符 * @param limit 限制分片数,-1不限制 * @param isTrim 是否去除切分字符串后每个元素两边的空格 * @param ignoreEmpty 是否忽略空串 * @return 切分后的集合 * @since 3.2.0 */ public static List<String> split(CharSequence str, CharSequence separator, int limit, boolean isTrim, boolean ignoreEmpty) { if (null == str) { return new ArrayList<>(0); } final String separatorStr = (null == separator) ? null : separator.toString(); return StrSpliter.split(str.toString(), separatorStr, limit, isTrim, ignoreEmpty); } /** * 切分字符串,如果分隔符不存在则返回原字符串 * * @param str 被切分的字符串 * @param separator 分隔符 * @return 字符串 */ public static String[] split(CharSequence str, CharSequence separator) { if (str == null) { return new String[]{}; } final String separatorStr = (null == separator) ? null : separator.toString(); return StrSpliter.splitToArray(str.toString(), separatorStr, 0, false, false); } /** * 根据给定长度,将给定字符串截取为多个部分 * * @param str 字符串 * @param len 每一个小节的长度 * @return 截取后的字符串数组 * @see StrSpliter#splitByLength(String, int) */ public static String[] split(CharSequence str, int len) { if (null == str) { return new String[]{}; } return StrSpliter.splitByLength(str.toString(), len); }

你可能感兴趣的:(字符串,java,spring)