ApacheCommonsLang3.10使⽤简介
=============================================================
⾏⽂介绍:
1、诞⽣背景
2、引⼊⽅案
3、简单介绍
4 、详情介绍
⽂档:
===============================================================
1、诞⽣背景
由于标准的Java库⽆法提供⽤于操纵其核⼼类的⾜够⽅法。Apache Commons Lang提供了这些额外的⽅法⼯具。
Lang为java.lang API提供了许多帮助程序实⽤程序,特别是字符串操作⽅法,基本数值⽅法,对象反射,并发,创建和序列化以及系统属性。此外,它还包含对java.util.Date的基本增强,以及⼀系列专⽤于构建⽅法的实⽤程序,例如hashCode,toString和equals。
2、引⼊⽅案,maven引⼊⽅式
<!-- mvnrepository/artifact/org.apachemons/commons-lang3 -->
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
3、简单介绍
org.apachemons.lang3 #提供⾼度可重⽤的静态实⽤程序⽅法,主要⽤于为java.lang类增加值。
org.apachemons.lang3.arch #提供类以使⽤os.arch系统属性的值。
org.apachemons.lang3.builder #帮助创建⼀致的equals(Object)、toString()、hashCode()和compareTo(Object)⽅法。org.apachemons.lang3pare #提供类以使⽤可⽐较接⼝和⽐较接⼝。
org.urrent #为多线程编程提供⽀持类。
org.apachemons.lang3.event #提供⼀些有⽤的基于事件的实⽤程序。
org.ption #提供异常功能。
org.apachemons.lang3.math #为商业数学类扩展java.math。
org.apachemons.lang3.mutable #为基元值和对象提供类型化的可变包装器。
org.flect #提供反射flect API的常见⾼级⽤法。
org. #提供⽤于处理和操作⽂本的类,部分⽤作的扩展。
org.ranslate #⽤于从⼀组较⼩的构造块创建⽂本转换例程的API。
org.apachemons.lang3.time #提供处理⽇期和持续时间的类和⽅法。
org.apachemons.lang3.tuple #元组类,从版本3.0中的对类开始。
4 、常⽤详情介绍
常⽤字符串(StringUtils)
//缩短到某长度,⽤...结尾.其实就是(substring(str, 0, max-3) + "...")
//public static String abbreviate(String str,int maxWidth)
StringUtils.abbreviate("abcdefg", 6);// ---""
//字符串结尾的后缀是否与你要结尾的后缀匹配,若不匹配则添加后缀
StringUtils.appendIfMissing("abc","xyz");//---"abcxyz"
StringUtils.appendIfMissingIgnoreCase("abcXYZ","xyz");//---"abcXYZ"
//⾸字母⼤⼩写转换
StringUtils.capitalize("cat");//---"Cat"
StringUtils.uncapitalize("Cat");//---"cat"
//字符串扩充⾄指定⼤⼩且居中(若扩充⼤⼩少于原字符⼤⼩则返回原字符,若扩充⼤⼩为负数则为0计算)        ("abcd", 2);//--- "abcd"
<("ab", -1);//--- "ab"
<("ab", 4);//---" ab "
<("a", 4, "yz");//---"yayz"
<("abc", 7, "");//---"  abc  "
//去除字符串中的"\n", "\r", or "\r\n"
StringUtils.chomp("abc\r\n");//---"abc"
//判断⼀字符串是否包含另⼀字符串
//统计⼀字符串在另⼀字符串中出现次数
//删除字符串中的梭有空格
StringUtils.deleteWhitespace("  ab  c  ");//---"abc"
//⽐较两字符串,返回不同之处。确切的说是返回第⼆个参数中与第⼀个参数所不同的字符串
StringUtils.difference("abcde", "abxyz");//---"xyz"
//检查字符串结尾后缀是否匹配
/
/检查起始字符串是否匹配
StringUtils.startsWith("abcdef", "abc");//---true
StringUtils.startsWithIgnoreCase("ABCDEF", "abc");//---true
StringUtils.startsWithAny("abcxyz", new String[] {null, "xyz", "abc"});//---true
//判断两字符串是否相同
StringUtils.equals("abc", "abc");//---true
StringUtils.equalsIgnoreCase("abc", "ABC");//---true
//⽐较字符串数组内的所有元素的字符序列,起始⼀致则返回⼀致的字符串,若⽆则返回""
//正向查字符在字符串中第⼀次出现的位置
StringUtils.indexOf("aabaabaa", "b");//---2
StringUtils.indexOf("aabaabaa", "b", 3);//---5(从⾓标3后查)
//反向查字符串第⼀次出现的位置
StringUtils.lastIndexOf("aabaabaa", ‘b‘);//---5
StringUtils.lastIndexOf("aabaabaa", ‘b‘, 4);//---2
StringUtils.lastOrdinalIndexOf("aabaabaa", "ab", 2);//---1
//判断字符串⼤写、⼩写
StringUtils.isAllUpperCase("ABC");//---true
StringUtils.isAllLowerCase("abC");//---false
//判断是否为空(注:isBlank与isEmpty 区别)
StringUtils.isBlank(null);StringUtils.isBlank("");StringUtils.isBlank(" ");//---true
StringUtils.isNoneBlank(" ", "bar");//---false
StringUtils.isEmpty(null);StringUtils.isEmpty("");//---true
StringUtils.isEmpty(" ");//---false
StringUtils.isNoneEmpty(" ", "bar");//---true
//判断字符串数字
StringUtils.isNumeric("123");//---false
StringUtils.isNumeric("12 3");//---false (不识别运算符号、⼩数点、空格……)
StringUtils.isNumericSpace("12 3");//---true
//数组中加⼊分隔符号
//StringUtils.join([1, 2, 3], ‘;‘);//---"1;2;3"
//⼤⼩写转换
StringUtils.upperCase("aBc");//---"ABC"
StringUtils.lowerCase("aBc");//---"abc"
StringUtils.swapCase("The dog has a BONE");//---"tHE DOG HAS A bone"
//替换字符串内容……(replacePattern、replceOnce)
StringUtils.overlay("abcdef", "zz", 2, 4);//---"abzzef"(指定区域)
new String[]{"w", "t"});//---"wcte"(多组指定替换ab->w,d->t)
//重复字符
//反转字符串
//删除某字符
//分割字符串
StringUtils.split("a..b.c", ‘.‘);//---["a", "b", "c"]
StringUtils.split("ab:cd:ef", ":", 2);//---["ab", "cd:ef"]
StringUtils.splitByWholeSeparator("ab-!-cd-!-ef", "-!-", 2);//---["ab", "cd-!-ef"]
StringUtils.splitByWholeSeparatorPreserveAllTokens("ab::cd:ef", ":");//-["ab"," ","cd","ef"]        //去除⾸尾空格,类似trim……(stripStart、stripEnd、stripAll、stripAccents)
StringUtils.strip(" ab c ");//---"ab c"
StringUtils.stripToNull(null);//---null
StringUtils.stripToEmpty(null);//---""
//截取字符串
StringUtils.substring("abcd", 2);//---"cd"
StringUtils.substring("abcdef", 2, 4);//---"cd"
//left、right从左(右)开始截取n位字符
StringUtils.left("abc", 2);//---"ab"
StringUtils.right("abc", 2);//---"bc"
//从第n位开始截取m位字符      n  m
StringUtils.mid("abcdefg", 2, 4);//---"cdef"
StringUtils.substringBefore("abcba", "b");//---"a"
StringUtils.substringBeforeLast("abcba", "b");//---"abc"
StringUtils.substringAfter("abcba", "b");//---"cba"
StringUtils.substringAfterLast("abcba", "b");//---"a"
StringUtils.substringBetween("tagabctag", "tag");//---"abc"
StringUtils.substringBetween("yabczyabcz", "y", "z");//---"abc"
随机数⽣成类(RandomStringUtils)
//随机⽣成n位数数字
RandomStringUtils.randomNumeric(n);
//在指定字符串中⽣成长度为n的随机字符串
RandomStringUtils.random(n, "abcdefghijk");
//指定从字符或数字中⽣成随机字符串
System.out.println(RandomStringUtils.random(n, true, false));
System.out.println(RandomStringUtils.random(n, false, true));
数字类NumberUtils
//从数组中选出最⼤值
NumberUtils.max(new int[] { 1, 2, 3, 4 });//---4
//判断字符串是否全是整数
NumberUtils.isDigits("153.4");//--false
//判断字符串是否是有效数字
NumberUtils.isNumber("0321.1");//---false
数组类 ArrayUtils
//创建数组
String[] array = Array("1", "2");
//判断两个数据是否相等,如果内容相同,顺序相同则返回 true
ArrayUtils.isEquals(arr1,arr2);
//判断数组中是否包含某⼀对象
//⼆维数组转换成MAP
Map map = Map(new String[][] {
{ "RED", "#FF0000" }, { "GREEN", "#00FF00" }, { "BLUE", "#0000FF" } });
⽇期类DateUtils
//⽇期加n天
DateUtils.addDays(new Date(), n);
//判断是否同⼀天
DateUtils.isSameDay(date1, date2);
/
/字符串时间转换为Date
DateUtils.parseDate(str, parsePatterns);
/**
* String转换成Date
* arg0 : ⽇期字符串 String
* arg1 : 特定的地理,政治和⽂化地区.可以传null
* arg3 : ⽇期格式.与arg0格式⼀致 String
* 该⽅法对⽇期和时间的解释是宽松的
* 宽松的解释⽇期(如 1996 年 2 ⽉ 42 ⽇)将被视为等同于 1996 年 2 ⽉ 1 ⽇后的第 41 天
* 如果是严格的解释,此类⽇期就会引发异常
*/
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.TRADITIONAL_CHINESE, "yyyyMMdd hh:mm:ss"); Date date2 = DateUtils.parseDate("20171012 14:30:12", Locale.TRADITIONAL_CHINESE, "yyyyMMdd hh:mm:ss"); /**
* String转换成Date 严格的
* arg0 : ⽇期字符串 String
* arg1 : 特定的地理,政治和⽂化地区.可以传null
* arg3 : ⽇期格式.与arg0格式⼀致 String
* 该⽅法对⽇期和时间的解释是严格的
*/
Date date3 = DateUtils.parseDateStrictly("20171012", Locale.TRADITIONAL_CHINESE, "yyyyMMdd");
Date date4 = DateUtils.parseDateStrictly("20171012", Locale.TRADITIONAL_CHINESE, "yyyyMMdd");
/**
* 判断两个⽇期是否是同⼀天
* arg0 arg1 数据类型 : Date Calendar
* ⽐较arg0 arg1的
* ERA = 0 年代
* YEAR = 1 年
* DAY_OF_YEAR = 6 年中的第⼏天
*/
DateUtils.isSameDay(date3, date4);
System.out.println("isSameDay = " + DateUtils.isSameDay(date3, date4));
/**
* 判断两个⽇期是不是同⼀毫秒
* arg0 arg1 数据类型 : Date Calendar
* ⾃1970年1⽉1⽇00:00:00 GMT 的毫秒数是否相等
*/
DateUtils.isSameInstant(date1, date2);
System.out.println("isSameInstant = " + DateUtils.isSameInstant(date1, date2));
/**
* 判断是否是同⼀个本地时间
* arg0 arg1 数据类型 : Calendar
* ⽐较arg0 arg1的
* 数据类型
* ERA = 0 年代
* YEAR = 1 年
* DAY_OF_YEAR = 6 年中的第⼏天
* HOUR_OF_DAY = 11 天中的第⼏个⼩时
* MINUTE = 12 分钟
* SECOND = 13 秒
* MILLISECOND = 14 毫秒
*/
Calendar cal1 = Instance();
cal1.setTime(date1);
Calendar cal2 = Instance();
cal2.setTime(date2);
DateUtils.isSameLocalTime(cal1, cal2);
System.out.println("isSameLocalTime = " + DateUtils.isSameLocalTime(cal1, cal2));
/**
* 获取指定⽇期前后arg1年
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addYears(date1, 4);
System.out.println("addYears = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1⽉
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addMonths(date1, 4);
System.out.println("addMonths = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1周
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addWeeks(date1, 4);
System.out.println("addWeeks = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1天
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addDays(date1, 4);
System.out.println("addDays = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1⼩时
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addHours(date1, 4);
System.out.println("addHours = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1分钟
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addMinutes(date1, 4);
System.out.println("addMinutes = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1秒
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addSeconds(date1, 4);
System.out.println("addSeconds = " + sdf.format(date));
/**
* 获取指定⽇期前后arg1毫秒
* arg0 : 指定⽇期 Date类型
* arg1 : int型,正数向后天数,0当天,负数向前天数
*/
date = DateUtils.addMilliseconds(date1, 4);
System.out.println("addMilliseconds = " + sdf.format(date)); /**
* 指定⽇期年的值
* arg0 : ⽇期 Date类型
* arg1 : int型
*/
java中split的用法date = DateUtils.setYears(date1, 2008);
System.out.println("setYears = " + sdf.format(date));
/**

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。