/**
* 一个空格字符串,在程序中尽可能用此常量,有利于提高性能 。
*/
public static final String SPACE = " ";
/**
* 一个空字符串
*/
public static final String EMPTY = "";
/**
*一个换行字符串
*/
public static final String LF = "\n";
/**
*一个换行字符串
*/
public static final String CR = "\r";
/**
* 检查字符串是否为""或null
*
* StringUtils.isEmpty(null) = true
* StringUtils.isEmpty("") = true
* StringUtils.isEmpty(" ") = false
* StringUtils.isEmpty("bob") = false
* StringUtils.isEmpty(" bob ") = false
*
* @param cs 被检查的字符串,可能是null
*/
public static boolean isEmpty(final CharSequence cs)
/**
* 检查字符串是否不为""或null
*
* StringUtils.isNotEmpty(null) = false
* StringUtils.isNotEmpty("") = false
* StringUtils.isNotEmpty(" ") = true
* StringUtils.isNotEmpty("bob") = true
* StringUtils.isNotEmpty(" bob ") = true
*
* @param cs 被检查的字符串,可能是null
*/
public static boolean isNotEmpty(final CharSequence cs)
/**
* 检查是否有一个或多个字符串为""或null
*
* StringUtils.isAnyEmpty(null) = true
* StringUtils.isAnyEmpty(null, "foo") = true
* StringUtils.isAnyEmpty("", "bar") = true
* StringUtils.isAnyEmpty("bob", "") = true
* StringUtils.isAnyEmpty(" bob ", null) = true
* StringUtils.isAnyEmpty(" ", "bar") = false
* StringUtils.isAnyEmpty("foo", "bar") = false
*
* @param css 被检查的字符串,可能是null或 ""
* @since 3.2
*/
public static boolean isAnyEmpty(CharSequence... css)
/**
*检查是否没有任何一个字符串为空""或null
*
* StringUtils.isNoneEmpty(null) = false
* StringUtils.isNoneEmpty(null, "foo") = false
* StringUtils.isNoneEmpty("", "bar") = false
* StringUtils.isNoneEmpty("bob", "") = false
* StringUtils.isNoneEmpty(" bob ", null) = false
* StringUtils.isNoneEmpty(" ", "bar") = true
* StringUtils.isNoneEmpty("foo", "bar") = true
*
* @param css 被检查的字符串,可能是null或 ""
* @since 3.2
*/
public static boolean isNoneEmpty(CharSequence... css)
/**
* 检查一个字符串是否为空白字符串、""或null
*
* StringUtils.isBlank(null) = true
* StringUtils.isBlank("") = true
* StringUtils.isBlank(" ") = true
* StringUtils.isBlank("bob") = false
* StringUtils.isBlank(" bob ") = false
*
* @param cs 被检查的字符串,可能是null
*/
public static boolean isBlank(final CharSequence cs)
/**
* 检查一个字符串是否不为空白字符串、""或null
*
* StringUtils.isNotBlank(null) = false
* StringUtils.isNotBlank("") = false
* StringUtils.isNotBlank(" ") = false
* StringUtils.isNotBlank("bob") = true
* StringUtils.isNotBlank(" bob ") = true
*
* @param cs 被检查的字符串,可能是null
*/
public static boolean isNotBlank(final CharSequence cs)
/**
* 检查是否有一个或多个字符串为空白字符串、""或null
*
* StringUtils.isAnyBlank(null) = true
* StringUtils.isAnyBlank(null, "foo") = true
* StringUtils.isAnyBlank(null, null) = true
* StringUtils.isAnyBlank("", "bar") = true
* StringUtils.isAnyBlank("bob", "") = true
* StringUtils.isAnyBlank(" bob ", null) = true
* StringUtils.isAnyBlank(" ", "bar") = true
* StringUtils.isAnyBlank("foo", "bar") = false
*
* @param css 被检查的字符串,可能是null或 ""
* @since 3.2
*/
public static boolean isAnyBlank(CharSequence... css)
/**
* 检查是否没有任何一字符串为空白字符串、""或null
*
* StringUtils.isNoneBlank(null) = false
* StringUtils.isNoneBlank(null, "foo") = false
* StringUtils.isNoneBlank(null, null) = false
* StringUtils.isNoneBlank("", "bar") = false
* StringUtils.isNoneBlank("bob", "") = false
* StringUtils.isNoneBlank(" bob ", null) = false
* StringUtils.isNoneBlank(" ", "bar") = false
* StringUtils.isNoneBlank("foo", "bar") = true
*
* @param css 被检查的字符串,可能是null或 ""
* @since 3.2
*/
public static boolean isNoneBlank(CharSequence... css)
/**
* 去掉字符串两端的控制符(control characters, char <= 32) ,
* 如果输入空白字符串、"",则返回"";如果为null,则返回null 。
*
* StringUtils.trim(null) = null
* StringUtils.trim("") = ""
* StringUtils.trim(" ") = ""
* StringUtils.trim("abc") = "abc"
* StringUtils.trim(" abc ") = "abc"
*
* @param str 被处理的字符串,可能是null
*/
public static String trim(final String str)
/**
* 去掉字符串两端的控制符(control characters, char <= 32) ,如果输入空白字符串、""或null,则返回null 。
*
* StringUtils.trimToNull(null) = null
* StringUtils.trimToNull("") = null
* StringUtils.trimToNull(" ") = null
* StringUtils.trimToNull("abc") = "abc"
* StringUtils.trimToNull(" abc ") = "abc"
*
* @param str 被处理的字符串,可能是null
*/
public static String trimToNull(final String str)
/**
* 去掉字符串两端的控制符(control characters, char <= 32) ,如果输入空白字符串、""或null,则返回"" 。
*
* StringUtils.trimToEmpty(null) = ""
* StringUtils.trimToEmpty("") = ""
* StringUtils.trimToEmpty(" ") = ""
* StringUtils.trimToEmpty("abc") = "abc"
* StringUtils.trimToEmpty(" abc ") = "abc"
*
* @param str 被处理的字符串,可能是null
*/
public static String trimToEmpty(final String str)
/**
* 去掉字符串两端的空白符(whitespace),如果输入null则返回null 。
*
* StringUtils.strip(null) = null
* StringUtils.strip("") = ""
* StringUtils.strip(" ") = ""
* StringUtils.strip("abc") = "abc"
* StringUtils.strip(" abc") = "abc"
* StringUtils.strip("abc ") = "abc"
* StringUtils.strip(" abc ") = "abc"
* StringUtils.strip(" ab c ") = "ab c"
*
* @param str 被处理的字符串,可能是null
*/
public static String strip(final String str)
/**
* 去掉字符串两端的空白符(whitespace), 如果输入空字符串、""或null,则返回null 。
*
* StringUtils.stripToNull(null) = null
* StringUtils.stripToNull("") = null
* StringUtils.stripToNull(" ") = null
* StringUtils.stripToNull("abc") = "abc"
* StringUtils.stripToNull(" abc") = "abc"
* StringUtils.stripToNull("abc ") = "abc"
* StringUtils.stripToNull(" abc ") = "abc"
* StringUtils.stripToNull(" ab c ") = "ab c"
*
* @param str 被处理的字符串,可能是null
*/
public static String stripToNull(String str)
/**
* 去掉字符串两端的空白符(whitespace), 如果输入空字符串、""或null,则返回"" 。
*
* StringUtils.stripToEmpty(null) = ""
* StringUtils.stripToEmpty("") = ""
* StringUtils.stripToEmpty(" ") = ""
* StringUtils.stripToEmpty("abc") = "abc"
* StringUtils.stripToEmpty(" abc") = "abc"
* StringUtils.stripToEmpty("abc ") = "abc"
* StringUtils.stripToEmpty(" abc ") = "abc"
* StringUtils.stripToEmpty(" ab c ") = "ab c"
*
* @param str 被处理的字符串,可能是null
*/
public static String stripToEmpty(final String str)
/**
* 在str中去掉stripChars中列出的所有字符。 如果str为null或str长度为0,则返回str本身 。
*
* StringUtils.strip(null, *) = null
* StringUtils.strip("", *) = ""
* StringUtils.strip("abc", null) = "abc"
* StringUtils.strip(" abc", null) = "abc"
* StringUtils.strip("abc ", null) = "abc"
* StringUtils.strip(" abc ", null) = "abc"
* StringUtils.strip(" abcyx", "xyz") = " abc"
*
* @param str 被去除字符的字符串,可能是 null
* @param stripChars 要去掉的字符, null 会以 whitespace来对待
*/
public static String strip(String str, final String stripChars)
/**
* 在str开头去掉stripChars中列出的所有字符。
* 如果str为null或等于"",则返回它本身; 如果stripChars为null或"",则返回strip(String str)。
*
* StringUtils.stripStart(null, *) = null
* StringUtils.stripStart("", *) = ""
* StringUtils.stripStart("abc", "") = "abc"
* StringUtils.stripStart("abc", null) = "abc"
* StringUtils.stripStart(" abc", null) = "abc"
* StringUtils.stripStart("abc ", null) = "abc "
* StringUtils.stripStart(" abc ", null) = "abc "
* StringUtils.stripStart("yxabc ", "xyz") = "abc "
*
* @param str 被去除字符的字符串,可能是 null
* @param stripChars 要去掉的字符, null 会以 whitespace来对待
*/
public static String stripStart(final String str, final String stripChars)
/**
*在str结尾去掉stripChars中列出的所有字符。
* 如果str为null或等于"",则返回它本身; 如果stripChars为null或"",则返回strip(String str)。
*
* StringUtils.stripEnd(null, *) = null
* StringUtils.stripEnd("", *) = ""
* StringUtils.stripEnd("abc", "") = "abc"
* StringUtils.stripEnd("abc", null) = "abc"
* StringUtils.stripEnd(" abc", null) = " abc"
* StringUtils.stripEnd("abc ", null) = "abc"
* StringUtils.stripEnd(" abc ", null) = " abc"
* StringUtils.stripEnd(" abcyx", "xyz") = " abc"
* StringUtils.stripEnd("120.00", ".0") = "12"
*
* @param str 被去除字符的字符串,可能是 null
* @param stripChars 要去掉的字符, null 会以 whitespace来对待
*/
public static String stripEnd(final String str, final String stripChars)
/**
* 对字符串数组中的每个字符串进行strip(String str) 。
* 如果strs为null或strs长度为0,则返回strs本身 。
*
* StringUtils.stripAll(null) = null
* StringUtils.stripAll([]) = []
* StringUtils.stripAll(["abc", " abc"]) = ["abc", "abc"]
* StringUtils.stripAll(["abc ", null]) = ["abc", null]
*/
public static String[] stripAll(final String... strs)
/**
* 对字符串数组中的每个字符串进行strip(String str, String stripChars) 。
* 如果strs为null或strs长度为0,则返回strs本身 。
*
* StringUtils.stripAll(null, *) = null
* StringUtils.stripAll([], *) = []
* StringUtils.stripAll(["abc", " abc"], null) = ["abc", "abc"]
* StringUtils.stripAll(["abc ", null], null) = ["abc", null]
* StringUtils.stripAll(["abc ", null], "yz") = ["abc ", null]
* StringUtils.stripAll(["yabcz", null], "yz") = ["abc", null]
*/
public static String[] stripAll(final String[] strs, final String stripChars)
/**
* 去掉参数中的一些特殊符号
* 如: 'à' 会被替换为 'a'
*
* StringUtils.stripAccents(null) = null
* StringUtils.stripAccents("") = ""
* StringUtils.stripAccents("control") = "control"
* StringUtils.stripAccents("éclair") = "eclair"
*/
public static String stripAccents(final String input)
/**
* 比较两个字符串是否相等 。
*
* StringUtils.equals(null, null) = true
* StringUtils.equals(null, "abc") = false
* StringUtils.equals("abc", null) = false
* StringUtils.equals("abc", "abc") = true
* StringUtils.equals("abc", "ABC") = false
*/
public static boolean equals(final CharSequence cs1, final CharSequence cs2)
/**
* 比较两个字符串是否相等,忽略大小写 。
*
* StringUtils.equalsIgnoreCase(null, null) = true
* StringUtils.equalsIgnoreCase(null, "abc") = false
* StringUtils.equalsIgnoreCase("abc", null) = false
* StringUtils.equalsIgnoreCase("abc", "abc") = true
* StringUtils.equalsIgnoreCase("abc", "ABC") = true
*/
public static boolean equalsIgnoreCase(final CharSequence str1, final CharSequence str2)
/**
* 返回字符searchChar在字符串seq中第一次出现的位置。
* 如果searchChar没有在seq中出现则返回-1,如果seq为null或"",则也返回-1。
*
* StringUtils.indexOf(null, *) = -1
* StringUtils.indexOf("", *) = -1
* StringUtils.indexOf("aabaabaa", 'a') = 0
* StringUtils.indexOf("aabaabaa", 'b') = 2
*/
public static int indexOf(final CharSequence seq, final int searchChar)
/**
* 在字符串seq的startPos之后的字符串中,找到第一次出现searchChar的位置 。
*
* StringUtils.indexOf(null, *, *) = -1
* StringUtils.indexOf("", *, *) = -1
* StringUtils.indexOf("aabaabaa", 'b', 0) = 2
* StringUtils.indexOf("aabaabaa", 'b', 3) = 5
* StringUtils.indexOf("aabaabaa", 'b', 9) = -1
* StringUtils.indexOf("aabaabaa", 'b', -1) = 2
*
* @param seq 被检查的字符串,可能为null
* @param searchChar 要找的字符
* @param startPos 指定开始的位置,负数会被识别的0
*/
public static int indexOf(final CharSequence seq, final int searchChar, final int startPos)
/**
* 返回字符串searchSeq在字符串seq中第一次出现的位置 。
*
* StringUtils.indexOf(null, *) = -1
* StringUtils.indexOf(*, null) = -1
* StringUtils.indexOf("", "") = 0
* StringUtils.indexOf("", *) = -1 (except when * = "")
* StringUtils.indexOf("aabaabaa", "a") = 0
* StringUtils.indexOf("aabaabaa", "b") = 2
* StringUtils.indexOf("aabaabaa", "ab") = 1
* StringUtils.indexOf("aabaabaa", "") = 0
*/
public static int indexOf(final CharSequence seq, final CharSequence searchSeq)
/**
* 在字符串str的startPos之后的字符串中,找到第一次出现searchStr的位置 。
*
* StringUtils.indexOf(null, *, *) = -1
* StringUtils.indexOf(*, null, *) = -1
* StringUtils.indexOf("", "", 0) = 0
* StringUtils.indexOf("", *, 0) = -1 (except when * = "")
* StringUtils.indexOf("aabaabaa", "a", 0) = 0
* StringUtils.indexOf("aabaabaa", "b", 0) = 2
* StringUtils.indexOf("aabaabaa", "ab", 0) = 1
* StringUtils.indexOf("aabaabaa", "b", 3) = 5
* StringUtils.indexOf("aabaabaa", "b", 9) = -1
* StringUtils.indexOf("aabaabaa", "b", -1) = 2
* StringUtils.indexOf("aabaabaa", "", 2) = 2
* StringUtils.indexOf("abc", "", 9) = 3
*
* @param seq 被检查的字符串,可能为null
* @param searchSeq 要找的字符串
* @param startPos 指定开始的位置,负数会被识别的0
*/
public static int indexOf(final CharSequence seq, final CharSequence searchSeq, final int startPos)
/**
* 返回字符串searchStr在字符串str中第ordinal次出现的位置 。
*
* StringUtils.ordinalIndexOf(null, *, *) = -1
* StringUtils.ordinalIndexOf(*, null, *) = -1
* StringUtils.ordinalIndexOf("", "", *) = 0
* StringUtils.ordinalIndexOf("aabaabaa", "a", 1) = 0
* StringUtils.ordinalIndexOf("aabaabaa", "a", 2) = 1
* StringUtils.ordinalIndexOf("aabaabaa", "b", 1) = 2
* StringUtils.ordinalIndexOf("aabaabaa", "b", 2) = 5
* StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
* StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4
* StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0
* StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0
*/
public static int ordinalIndexOf(final CharSequence str, final CharSequence searchStr, final int ordinal)
/**
* 返回字符串searchStr在字符串str中第一次出现的位置,忽略大小写 。
*
* StringUtils.indexOfIgnoreCase(null, *) = -1
* StringUtils.indexOfIgnoreCase(*, null) = -1
* StringUtils.indexOfIgnoreCase("", "") = 0
* StringUtils.indexOfIgnoreCase("aabaabaa", "a") = 0
* StringUtils.indexOfIgnoreCase("aabaabaa", "b") = 2
* StringUtils.indexOfIgnoreCase("aabaabaa", "ab") = 1
*/
public static int indexOfIgnoreCase(final CharSequence str, final CharSequence searchStr)
/**
* 在字符串str的startPos之后的字符串中,找到第一次出现searchStr的位置, 忽略大小写 。
*
* StringUtils.indexOfIgnoreCase(null, *, *) = -1
* StringUtils.indexOfIgnoreCase(*, null, *) = -1
* StringUtils.indexOfIgnoreCase("", "", 0) = 0
* StringUtils.indexOfIgnoreCase("aabaabaa", "A", 0) = 0
* StringUtils.indexOfIgnoreCase("aabaabaa", "B", 0) = 2
* StringUtils.indexOfIgnoreCase("aabaabaa", "AB", 0) = 1
* StringUtils.indexOfIgnoreCase("aabaabaa", "B", 3) = 5
* StringUtils.indexOfIgnoreCase("aabaabaa", "B", 9) = -1
* StringUtils.indexOfIgnoreCase("aabaabaa", "B", -1) = 2
* StringUtils.indexOfIgnoreCase("aabaabaa", "", 2) = 2
* StringUtils.indexOfIgnoreCase("abc", "", 9) = 3
*
* @param str 被检查的字符串,可能为null
* @param searchStr 要找的字符串,可能为null
* @param startPos 指定开始的位置,负数会被识别的0
*/
public static int indexOfIgnoreCase(final CharSequence str, final CharSequence searchStr, int startPos)
/**
* 返回字符searchChar在字符串seq中最后一次出现的位置 。
*
* StringUtils.lastIndexOf(null, *) = -1
* StringUtils.lastIndexOf("", *) = -1
* StringUtils.lastIndexOf("aabaabaa", 'a') = 7
* StringUtils.lastIndexOf("aabaabaa", 'b') = 5
*/
public static int lastIndexOf(final CharSequence seq, final int searchChar)
/**
* 返回字符searchChar从startPos开始在字符串seq中最后一次出现的位置 。
*
* StringUtils.lastIndexOf(null, *, *) = -1
* StringUtils.lastIndexOf("", *, *) = -1
* StringUtils.lastIndexOf("aabaabaa", 'b', 8) = 5
* StringUtils.lastIndexOf("aabaabaa", 'b', 4) = 2
* StringUtils.lastIndexOf("aabaabaa", 'b', 0) = -1
* StringUtils.lastIndexOf("aabaabaa", 'b', 9) = 5
* StringUtils.lastIndexOf("aabaabaa", 'b', -1) = -1
* StringUtils.lastIndexOf("aabaabaa", 'a', 0) = 0
*/
public static int lastIndexOf(final CharSequence seq, final int searchChar, final int startPos)
/**
* 返回字符串searchSeq在字符串seq中最后一次出现的位置 。
*
* StringUtils.lastIndexOf(null, *) = -1
* StringUtils.lastIndexOf(*, null) = -1
* StringUtils.lastIndexOf("", "") = 0
* StringUtils.lastIndexOf("aabaabaa", "a") = 7
* StringUtils.lastIndexOf("aabaabaa", "b") = 5
* StringUtils.lastIndexOf("aabaabaa", "ab") = 4
* StringUtils.lastIndexOf("aabaabaa", "") = 8
*/
public static int lastIndexOf(final CharSequence seq, final CharSequence searchSeq)
/**
* 返回字符串searchStr在字符串str中最后ordinal次出现的位置 。
*
* StringUtils.lastOrdinalIndexOf(null, *, *) = -1
* StringUtils.lastOrdinalIndexOf(*, null, *) = -1
* StringUtils.lastOrdinalIndexOf("", "", *) = 0
* StringUtils.lastOrdinalIndexOf("aabaabaa", "a", 1) = 7
* StringUtils.lastOrdinalIndexOf("aabaabaa", "a", 2) = 6
* StringUtils.lastOrdinalIndexOf("aabaabaa", "b", 1) = 5
* StringUtils.lastOrdinalIndexOf("aabaabaa", "b", 2) = 2
* StringUtils.lastOrdinalIndexOf("aabaabaa", "ab", 1) = 4
* StringUtils.lastOrdinalIndexOf("aabaabaa", "ab", 2) = 1
* StringUtils.lastOrdinalIndexOf("aabaabaa", "", 1) = 8
* StringUtils.lastOrdinalIndexOf("aabaabaa", "", 2) = 8
*/
public static int lastOrdinalIndexOf(final CharSequence str, final CharSequence searchStr, final int ordinal)
/**
* 在字符串seq的startPos之前的字符串中,找到最后一次出现searchSeq的位置 。
* 当startPos的长度超过字符串的总长度时,会在整个str中查找 。
*
* StringUtils.lastIndexOf(null, *, *) = -1
* StringUtils.lastIndexOf(*, null, *) = -1
* StringUtils.lastIndexOf("aabaabaa", "a", 8) = 7
* StringUtils.lastIndexOf("aabaabaa", "b", 8) = 5
* StringUtils.lastIndexOf("aabaabaa", "ab", 8) = 4
* StringUtils.lastIndexOf("aabaabaa", "b", 9) = 5
* StringUtils.lastIndexOf("aabaabaa", "b", -1) = -1
* StringUtils.lastIndexOf("aabaabaa", "a", 0) = 0
* StringUtils.lastIndexOf("aabaabaa", "b", 0) = -1
* StringUtils.lastIndexOf("aabaabaa", "b", 1) = -1
* StringUtils.lastIndexOf("aabaabaa", "b", 2) = 2
* StringUtils.lastIndexOf("aabaabaa", "ba", 2) = -1
* StringUtils.lastIndexOf("aabaabaa", "ba", 2) = 2
*
* @param seq 被检查的字符串,可能为null
* @param searchSeq 要找的字符串,可能为null
* @param startPos 指定开始的位置,负数会被识别的0
*/
public static int lastIndexOf(final CharSequence seq, final CharSequence searchSeq, final int startPos)
/**
* 返回字符串searchStr在字符串str中最后一次出现的位置,忽略大小写 。
*
* StringUtils.lastIndexOfIgnoreCase(null, *) = -1
* StringUtils.lastIndexOfIgnoreCase(*, null) = -1
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "A") = 7
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B") = 5
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "AB") = 4
*/
public static int lastIndexOfIgnoreCase(final CharSequence str, final CharSequence searchStr)
/**
* 在字符串str的startPos之前的字符串中,找到最后一次出现searchStr的位置, 忽略大小写 。
* 当startPos的长度超过字符串的总长度时,会在整个str中查找 。
*
* StringUtils.lastIndexOfIgnoreCase(null, *, *) = -1
* StringUtils.lastIndexOfIgnoreCase(*, null, *) = -1
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "A", 8) = 7
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B", 8) = 5
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "AB", 8) = 4
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B", 9) = 5
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B", -1) = -1
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "A", 0) = 0
* StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B", 0) = -1
*/
public static int lastIndexOfIgnoreCase(final CharSequence str, final CharSequence searchStr, int startPos)
/**
* 当字符串seq包含指定的字符searchChar时,返回 true 。
*
* StringUtils.contains(null, *) = false
* StringUtils.contains("", *) = false
* StringUtils.contains("abc", 'a') = true
* StringUtils.contains("abc", 'z') = false
*/
public static boolean contains(final CharSequence seq, final int searchChar)