目录
Commons Lang3 概述
1、标准 java 库无法提供足够的方法来操作其核心类,apache commons lang 子项目提供了这些额外的方法。特别是字符串操作方法、基本数值方法、对象反射、并发、创建和序列化以及系统属性。经理再也不用担心空指针异常。此外 lang 还还包含对 java.util.date 的基本增强,以及一系列专门用于帮助构建方法的实用程序,如 hasHcode、toString 和 equals。
2、lang3.0(及其后续版本)使用的包(org.apache.commons.lang3)与以前的版本(org.apache.commons.lang)不同,允许它与以前的版本同时使用。
3、Apache Commons Lang3 子项目官网地址:http://commons.apache.org/proper/commons-lang/
4、Apache Commons Lang3 二进制包下载地址:http://commons.apache.org/proper/commons-lang/download_lang.cgi
5、Apache Commons Lang3 Maven 依赖:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
6、Apache Commons Lang 3.9 API 文档:http://commons.apache.org/proper/commons-lang/javadocs/api-release/index.html
Commons lang3 常用工具类
工具类 | 描述 | 示例 |
---|---|---|
org.apache.commons.lang3.math.NumberUtils | 数值工具类 | NumberUtils.toInt(null) = 0, NumberUtils.toInt("1") = 1 |
org.apache.commons.lang3.ArrayUtils | 数组工具类 | ArrayUtils.remove([1, 0], 1) = [1] |
org.apache.commons.lang3.BooleanUtils | 布尔工具类 | BooleanUtils.toInteger(true) = 1, BooleanUtils.toBoolean(1) = Boolean.TRUE |
org.apache.commons.lang3.RandomStringUtils | 随机字符串工具类 | RandomStringUtils.randomAlphabetic(10) = "CtDdCZEldF", RandomStringUtils.randomGraph(10) = #vdP\eCl@F |
org.apache.commons.lang3.RandomUtils | 随机数值工具类 | RandomUtils.nextBoolean(), RandomUtils.nextInt(100,1000) |
org.apache.commons.lang3.SystemUtils | 系统工具类 | SystemUtils.getUserHome() = "C:\Users\Think" |
org.apache.commons.lang3.time.DateFormatUtils | 日期格式化工具类,将日期转为指定格式的字符串 | DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:dd") = "2019-11-11 11:11:11" |
org.apache.commons.lang3.time.DateUtils | 日期工具类,将指定格式的字符串转为日期 | DateUtils.parseDate("1993-09-08 14:30:08","yyyy-MM-dd HH:mm:dd") |
StringUtils 工具类方法汇总
如下所有都是静态方法,可以直接调用,更多详细内容,参考官网。
方法 | 描述 | 举例 |
---|---|---|
isBlank(CharSequence cs) | 判断目标字符串为空或者为null,空格也当作为空 | StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true StringUtils.isBlank("bob") = false StringUtils.isBlank(" bob ") = false |
isNotBlank(CharSequence cs) | 判断目标字符串不为空且不为null,空格也当作为空 | StringUtils.isNotBlank(null) = false StringUtils.isNotBlank("") = false StringUtils.isNotBlank(" ") = false StringUtils.isNotBlank("bob") = true StringUtils.isNotBlank(" bob ") = true |
isEmpty(CharSequence cs) | 判断目标字符串为空或者为null,空格不当作为空 | StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false StringUtils.isEmpty("bob") = false StringUtils.isEmpty(" bob ") = false |
isNotEmpty(CharSequence cs) | 判断目标字符串不为空且不为null,空格不当作为空 | StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty("") = false StringUtils.isNotEmpty(" ") = true StringUtils.isNotEmpty("bob") = true StringUtils.isNotEmpty(" bob ") = true |
isNumeric(CharSequence cs) | 判断字符串是否是数字,不忽略空格 | * StringUtils.isNumeric(null) = false * StringUtils.isNumeric("") = false * StringUtils.isNumeric(" ") = false * StringUtils.isNumeric("123") = true * StringUtils.isNumeric("\u0967\u0968\u0969") = 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 |
isNumericSpace(CharSequence cs) | 判断字符串是否是数字,忽略空格 | * StringUtils.isNumericSpace(null) = false * StringUtils.isNumericSpace("") = true * StringUtils.isNumericSpace(" ") = true * StringUtils.isNumericSpace("123") = true * StringUtils.isNumericSpace("12 3") = true * StringUtils.isNumeric("\u0967\u0968\u0969") = true * StringUtils.isNumeric("\u0967\u0968 \u0969") = true * StringUtils.isNumericSpace("ab2c") = false * StringUtils.isNumericSpace("12-3") = false * StringUtils.isNumericSpace("12.3") = false |
isAlpha(CharSequence cs) | 判断字符串是否是希腊字母,不忽略空格 | * StringUtils.isAlpha(null) = false * StringUtils.isAlpha("") = false * StringUtils.isAlpha(" ") = false * StringUtils.isAlpha("abc") = true * StringUtils.isAlpha("ab2c") = false * StringUtils.isAlpha("ab-c") = false |
isAlphaSpace(CharSequence cs) | 判断字符串是否是希腊字母,忽略空格 | * StringUtils.isAlphaSpace(null) = false * StringUtils.isAlphaSpace("") = true * StringUtils.isAlphaSpace(" ") = true * StringUtils.isAlphaSpace("abc") = true * StringUtils.isAlphaSpace("ab c") = true * StringUtils.isAlphaSpace("ab2c") = false * StringUtils.isAlphaSpace("ab-c") = false |
isAlphanumeric(CharSequence cs) isAlphanumericSpace(CharSequence cs) |
判断字符串是否是希腊字母与数字组成,不忽略空格 与 忽略空格 |
* StringUtils.isAlphanumeric("ab c") = false * StringUtils.isAlphanumericSpace("ab c") = true |
isAllLowerCase(CharSequence cs) | 判断字符串是否全是小写字母 | * 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 |
isAllUpperCase(CharSequence cs) | 判断字符串是否全大写字母 | * 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 |
contains(CharSequence seq, CharSequence searchSeq) | 判断源字符串 seq 是否包含字符串 searchSeq。区分大小写 | * StringUtils.contains(null, *) = false * StringUtils.contains(*, null) = false * StringUtils.contains("", "") = true * StringUtils.contains("abc", "") = true * StringUtils.contains("abc", "a") = true * StringUtils.contains("abc", "z") = false |
contains(CharSequence seq, int searchChar) | 判断源字符串 seq 是否包含字符 searchChar。区分大小写 | * StringUtils.contains(null, *) = false * StringUtils.contains("", *) = false * StringUtils.contains("abc", 'a') = true * StringUtils.contains("abc", 'z') = false |
containsAny(CharSequence cs, CharSequence searchChars) | 判断源字符串 seq 是否包含字符串 searchChars。不区分大小写 | * StringUtils.containsAny(null, *) = false * StringUtils.containsAny("", *) = false * StringUtils.containsAny(*, null) = false * StringUtils.containsAny(*, "") = false * StringUtils.containsAny("zzabyycdxx", "za") = true * StringUtils.containsAny("zzabyycdxx", "by") = true * StringUtils.containsAny("zzabyycdxx", "zy") = true * StringUtils.containsAny("zzabyycdxx", "\tx") = true * StringUtils.containsAny("zzabyycdxx", "$.#yF") = true * StringUtils.containsAny("aba", "z") = false |
containsAny(CharSequence cs, CharSequence... searchCharSequences) | searchCharSequences 数组中主要有任意一个匹配上就返回 true | * StringUtils.containsAny(null, *) = false * StringUtils.containsAny("", *) = false * StringUtils.containsAny(*, null) = false * StringUtils.containsAny(*, []) = false * StringUtils.containsAny("abcd", "ab", null) = true * StringUtils.containsAny("abcd", "ab", "cd") = true * StringUtils.containsAny("abc", "d", "abc") = true |
trim(String str) | 去掉字符串前后空格。为空时返回空,为 null 时返回 null(不是字符串null,防止空指针异常) | * StringUtils.trim(null) = null * StringUtils.trim("") = "" * StringUtils.trim(" ") = "" * StringUtils.trim("abc") = "abc" * StringUtils.trim(" abc ") = "abc" |
trimToNull(String str) | 去掉字符串前后空格。当为空时,返回 null(不是字符串null,防止空指针异常) | * StringUtils.trimToNull(null) = null * StringUtils.trimToNull("") = null * StringUtils.trimToNull(" ") = null * StringUtils.trimToNull("abc") = "abc" * StringUtils.trimToNull(" abc ") = "abc" |
trimToEmpty(String str) | 去掉字符串前后空格。当为 null 时,返回空 | * StringUtils.trimToEmpty(null) = "" * StringUtils.trimToEmpty("") = "" * StringUtils.trimToEmpty(" ") = "" * StringUtils.trimToEmpty("abc") = "abc" * StringUtils.trimToEmpty(" abc ") = "abc" |
equals(CharSequence cs1, CharSequence cs2) | 比较两个字符串是否相等,区分大小写 | * 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 |
equalsIgnoreCase(CharSequence cs1, 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 |
indexOf(CharSequence seq, CharSequence searchSeq) | 查找 seq 中 searchSeq 第一次出现的索引位置,找不到返回 -1,区分大小写。 | * 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 |
indexOf(final CharSequence seq, final CharSequence searchSeq, final int startPos) | 从指定位置开始查找 | * 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 |
indexOfAny(final CharSequence str, final CharSequence... searchStrs) | 查找数组中任意元素在源字符串中出现的索引位置,满足多个时,取最小值 | * StringUtils.indexOfAny(null, *) = -1 * StringUtils.indexOfAny(*, null) = -1 * StringUtils.indexOfAny(*, []) = -1 * StringUtils.indexOfAny("zzabyycdxx", ["ab", "cd"]) = 2 * StringUtils.indexOfAny("zzabyycdxx", ["cd", "ab"]) = 2 StringUtils.indexOfAny("zzabyycdxx", ["mn", "op"]) = -1 StringUtils.indexOfAny("zzabyycdxx", ["zab", "aby"]) = 1 * StringUtils.indexOfAny("zzabyycdxx", [""]) = 0 * StringUtils.indexOfAny("", [""]) = 0 * StringUtils.indexOfAny("", ["a"]) = -1 |
lowerCase(final String str) | 字符串小写转大写 | * StringUtils.lowerCase(null) = null * StringUtils.lowerCase("") = "" * StringUtils.lowerCase("aBc") = "abc" |
upperCase(final String str) | 字符串大写转小写 | * StringUtils.upperCase(null) = null * StringUtils.upperCase("") = "" * StringUtils.upperCase("aBc") = "ABC" |
abbreviate(final String str, final int maxWidth) | 对 str 字符串进行省略号缩写,maxWidth 表示长度,必须大于等于4 | * 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 |
capitalize(final String str) | 将首字母转大写 | * StringUtils.capitalize(null) = null * StringUtils.capitalize("") = "" * StringUtils.capitalize("cat") = "Cat" * StringUtils.capitalize("cAt") = "CAt" * StringUtils.capitalize("'cat'") = "'cat'" |
center(final String str, final int size) | 将 str 前后用空格填充,使总长度达到 size。size 本身小于 str 长度时,不做填充 | * StringUtils.center(null, *) = null * StringUtils.center("", 4) = " " * StringUtils.center("ab", -1) = "ab" * StringUtils.center("ab", 4) = " ab " * StringUtils.center("abcd", 2) = "abcd" * StringUtils.center("a", 4) = " a " |
center(String str, final int size, String padStr) | 使用指定字符串进行填充 | * StringUtils.center(null, *, *) = null * StringUtils.center("", 4, ' ') = " " * StringUtils.center("ab", -1, ' ') = "ab" * StringUtils.center("ab", 4, ' ') = " ab " * StringUtils.center("abcd", 2, ' ') = "abcd" * StringUtils.center("a", 4, ' ') = " a " * StringUtils.center("a", 4, 'y') = "yayy" |
compare(final String str1, final String str2) compareIgnoreCase(final String str1, final String str2) |
比较字符串 str1 与 str2 的大小。不忽略大小写 与 忽略大小写 | * StringUtils.compare(null, null) = 0 * StringUtils.compare(null , "a") = -1 * StringUtils.compare("a", null) = 1 * StringUtils.compare("abc", "abc") = 0 * StringUtils.compare("a", "b") = -1 * StringUtils.compare("b", "a") = 1 * StringUtils.compare("a", "B") = 31 * StringUtils.compare("ab", "abc") = -1 |
countMatches(final CharSequence str, final CharSequence sub) | 查找字符串中某个字符或者字符串出现的次数 | * StringUtils.countMatches(null, *) = 0 * StringUtils.countMatches("", *) = 0 * StringUtils.countMatches("abba", null) = 0 * StringUtils.countMatches("abba", "") = 0 * StringUtils.countMatches("abba", "a") = 2 * StringUtils.countMatches("abba", "ab") = 1 * StringUtils.countMatches("abba", "xxx") = 0 |
String join(final Object[] array, final String separator) | 将数组 array 使用分隔符 separator 连接成字符串 | * StringUtils.join(null, *) = null * StringUtils.join([], *) = "" * StringUtils.join([null], *) = "" * StringUtils.join(["a", "b", "c"], "--") = "a--b--c" * StringUtils.join(["a", "b", "c"], null) = "abc" * StringUtils.join(["a", "b", "c"], "") = "abc" * StringUtils.join([null, "", "a"], ',') = ",,a" |
String join(final Iterable<?> iterable, final String separator) String join(final Iterator<?> iterator, final String separator) |
将 Iterable 、Iterator 类型使用连接符连接 | List<String> list = new ArrayList<String>(); * StringUtils.join(Arrays.asList(new String[]{null, "", "a"}), ';') = ;;a |
RandomUtils 工具类方法汇总
底层也是使用 java.util.Random。
方法 | 描述 | |
---|---|---|
static int nextInt() | 生成 [0, Integer.MAX_VALUE) 之间的随机 int 值 | |
static int nextInt(final int startInclusive, final int endExclusive) | 生成 [startInclusive,endExclusive) 之间的随机整数,起始值不能小于终止值。 | |
static boolean nextBoolean() | 随机生成一个布尔值,true 或者 false | |
static long nextLong() | 生成 [0, Long.MAX_VALUE) 之间的 long 值 | |
long nextLong(final long startInclusive, final long endExclusive) | 生成 [startInclusive,endExclusive) 之间的随机 long 值 | |
static byte[] nextBytes(final int count) | 生成指定个数的字节数组,如 nextBytes(10) 生成的字节数组有 10 个 byte 元素 | |
static double nextDouble() | 生成 [0, Double.MAX_VALUE) 直接的随机 double 值 | |
double nextDouble(final double startInclusive, final double endInclusive) | 生成 [startInclusive,endExclusive) 之间的随机 double 值 | |
static float nextFloat() | 生成 [0, Float.MAX_VALUE) 之间的随机 fluat 值 | |
float nextFloat(final float startInclusive, final float endInclusive) | 生成 [startInclusive,endExclusive) 之间的随机 float 值 |