介绍
📝 cntool
对日常工作中经常使用到的一些方法进行了封装,是一款开源的小工具
ps:
gitee
仓库地址在右边👉gitee仓库
使用说明
版本更新内容
文档中提到的版本,都是在一开始制作的时候记录的。其实一开始没打算把这个工具上传到maven仓中,后来机缘巧合下才促成了该工具的maven坐标。
1.0.0版本
:该版本为上传maven仓的第一个版本,属于实验性质的版本,虽然也可以使用,但是不太推荐
1.0.1版本
:该版本为最新版本,算是真正意义上的第一个版本
1.1.0版本
:
- 调整
DateUtils
包下的获取当前时间方法名,由DateUtils.currentDate()
调整为DateUtils.now()
- 新增判断当前时间是否在指定时间段内方法
DateUtils.IsInTime()
- 新增将网络图片转为base64方法
ImgUtils.httpToBase64()
maven项目
在pom.xml
的dependencies
标签中加入一下内容
<!-- 最新版本cnTool工具 -->
<dependency>
<groupId>io.gitee.cntool</groupId>
<artifactId>cntool-core</artifactId>
<version>1.1.0</version>
</dependency>
工具功能
日期操作
cntool
中日期操作默认返回格式为yyyy-MM-dd HH:mm:ss
年份往前/后推
//返回格式为字符串格式 正数为往后推 负数为往前推
DateUtils.yearMove(1);
//返回格式为Date格式 正数为往后推 负数为往前推
DateUtils.yearMoveToDate(1);
同时,cntool
也提供了指定格式化格式的使用方法
//返回格式为字符串格式 正数为往后推 负数为往前推
DateUtils.yearMove(1 , "yyyy-MM-dd");
//返回格式为Date格式 正数为往后推 负数为往前推
DateUtils.yearMoveToDate(1 , "yyyy-MM-dd");
cntool
还提供了从指定日期开始推的操作
//返回格式为字符串格式 正数为往后推 负数为往前推
DateUtils.yearMove("2022-01-15" , 1 , "yyyy-MM-dd");
//返回格式为Date格式 正数为往后推 负数为往前推
DateUtils.yearMoveToDate("2022-01-15" , 1 , "yyyy-MM-dd");
对于约定俗成的一些,cntool
也提供了部分对应的方法
上一年
//返回格式为字符串格式
DateUtils.lastYear();
//返回格式为Date格式
DateUtils.lastYearToDate();
下一年
//返回格式为字符串格式
DateUtils.nextYear();
//返回格式为Date格式
DateUtils.nextYearToDate();
对于月
、日
操作,cntool
均提供有与年份操作类似的方法,大家自己去探索吧~
当前日期是否在指定日期段内
在cntool 0.0.2
版本中,新增了一个判断当前日期是否在指定日期段内的方法isInSection
,该方法传参方式有两种,话不多说,看代码👇
//格式1
DateUtils.isInSection("21", "25", false);
//格式2
DateUtils.isInSection("2022-01-20", "2022-02-19", false);
isInSection
方法最后一个参数为结束日期是否在本月 true
本月 false
下月
当前时间是否在指定时间段内
在cntool 1.1.0
版本中,新增了一个判断当前日期是否在指定日期段内的方法isInSection
,该方法传参方式有两种,话不多说,看代码👇
//示例
DateUtils.isInTime("07:00:00", "20:00:00", "HH:mm:ss");
Map集合
对于map集合的操作,当前cntool
仅提供四个方法,后续会逐渐进行补充
Map是否为空
MapUtils.isEmpty(map);
获取map集合最大或最小值对应的key
该方法仅用来判断value为BigDecimal类型的Map集合
//minOrMaxEnum 最大最小值枚举类 MIN最小值 MAX最大值
MapUtils.minOrMaxValueKeyBigDecimal(map, MinOrMaxEnum.MIN);
该方法仅用来判断value为Integer类型的Map集合
//minOrMaxEnum 最大最小值枚举类 MIN最小值 MAX最大值
MapUtils.minOrMaxValueKeyInteger(map, MinOrMaxEnum.MIN);
求Map中Value(值)的最大值
MapUtils.maxValue(map);
字符串
判断字符串是否是整数
cntool
提供了校验字符串是否为整数的功能,其原理其实就是使用了Integer.parseInt(value);
方法,在遇到无法转换时会抛出异常,cntool
通过捕捉异常信息从而进行判断
StrUtils.isInteger(str);
考虑到Integer
的取值范围是从-2147483648
至 2147483647
,包括-2147483648
和 2147483647
。
当传入的值不在这个范围内时,存在误判的情况,所以cntool
提供了一个校验Long
类型的方法
StrUtils.isLong(str);
校验手机号格式是否正确
cntool
提供了最新的手机后格式校验方法👇
StrUtils.isPhone("phoneNum");
校验字符串是否为空
StrUtils.isBlank(str);
校验字符串是否不为空
StrUtils.isNotBlank(str);
判断字符串是否是全英文
判断字符串是否是全英文
,可以直接使用str.matches("^[a-zA-Z]*")
方法,但是这个方法对于中间有空格的英文字符串,判断返回结果是false
,cntool
工具类的isEnglish
方法会先将字符串的所有空格去掉后再进行判断
//true全英文 false非全英文
StrUtils.isEnglish(str);
驼峰转下划线小写
该方法会将驼峰格式命名的字符串,转为小写下划线的形式
例:
userName
经过转换后为user_name
String str = "userName";
StrUtils.humpToUnderline(str);
IP工具类
获取IP地址
cntool
从0.0.4
版本开始提供获取IP地址
的方法
//0.0.4及以上版本
IpUtils.getIpAddr(request);
判断的是否是IP地址
cntool
从0.0.6
版本开始,提供校验传入字符串是否是IP地址
的方法,使用方法如下
//true是 false否
IpUtils.isIp(str);
根据字段名使用其对应的getter
、setter
方法
强制:
传入的字段名必须与实体类
中的字段名一致
通过字段名使用其getter方法
//创建一个实例对象
Student stu = new Student()
.setAgeSex(18)
.setScore(88);
//需要调用方法的字段名
String fieldName = "ageSex";
//使用getter获取值
Object getMethod = UseMethod.getGetMethod(stu, fieldName);
通过字段名使用其setter方法
//创建一个实例对象
Student stu = new Student()
.setAgeSex(18)
.setScore(88);
//需要调用方法的字段名
String fieldName = "ageSex";
//使用setter赋值
UseMethod.setValue(stu, stu.getClass(), fieldName,
Student.class.getDeclaredField(fieldName).getType(),"新值");
常量池
常量池
创建的初衷是为了可以为项目中参数后续修改提供一个统一的入口,同时在开发中有些时候直接传入"1"
之类的魔法值,会使得很多地方不好维护,因此cntool
衍生了常量池
的概念。常量池
内部存的其实都是一些cntool
工具类使用到的常量,通过静态开放使使用cntool
工具的用户也能使用
数字池 NumberPool
cntool
数字池目前仅提供0~20
及255
,使用方法如下👇
// 0
int result = NumberPool.ZERO;
// 1
result = NumberPool.ONE;
// 2
result = NumberPool.TWO;
// 3
result = NumberPool.THREE;
// 4
result = NumberPool.FOUR;
// 5
result = NumberPool.FIVE;
// 6
result = NumberPool.SIX;
// 7
result = NumberPool.SEVEN;
// 8
result = NumberPool.EIGHT;
// 9
result = NumberPool.NINE;
// 10
result = NumberPool.TEN;
// 11
result = NumberPool.ELEVEN;
// 12
result = NumberPool.TWELVE;
// 13
result = NumberPool.THIRTEEN;
// 14
result = NumberPool.FOURTEEN;
// 15
result = NumberPool.FIFTEEN;
// 16
result = NumberPool.SIXTEEN;
// 17
result = NumberPool.SEVENTEEN;
// 18
result = NumberPool.EIGHTEEN;
// 19
result = NumberPool.NINETEEN;
// 20
result = NumberPool.TWENTY;
// 255
result = NumberPool.TWO_HUNDRED_FIFTY_FIVE;
字符串池 StringPool
//字符串 127.0.0.1
String result = StringPool.LOCAL_IP;
//字符串 unknown
result = StringPool.UN_KNOWN;
//字符串 x-forwarded-for
result = StringPool.X_FORWARDED_FOR;
//字符串 Proxy-Client-IP
result = StringPool.PROXY_CLIENT_IP;
//字符串 WL-Proxy-Client-IP
result = StringPool.WL_PROXY_CLIENT_IP;
//字符串 is
result = StringPool.IS;
//手机号码验证格式
result = StringPool.PHONE_FORMAT;
//字符串 data
result = StringPool.DATA;
符号池 SymbolPool
//逗号
String result = SymbolPool.COMMA;
//句号
result = SymbolPool.FULL_STOP;
// 下划线字符
result = SymbolPool.UNDERLINE;
//转义之后的"."
result = SymbolPool.SPOT;
/* 转义后的"\"
由于"\"表示的是一个转义字符
而"\"也是正则表达式的转义
所以在replaceAll(str1,str2)之类的方法中
"\"必须进行双转义才可以正常使用*/
result = SymbolPool.SLASH;
// 英文字符
//设立的目的是仅用在判断字符串是否是全英文判断参数中
result = SymbolPool.ENGLISH;
🔦 使用说明
📜 本工具已经加入木兰开源协议,使用前请先阅读该协议 📜
Copyright © [2022] [ID-tang]
[cntool] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
参与贡献
@ID-Tang