Java工具类cntool

介绍

📝 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.xmldependencies标签中加入一下内容

<!-- 最新版本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的取值范围是从-21474836482147483647 ,包括-21474836482147483647
当传入的值不在这个范围内时,存在误判的情况,所以cntool提供了一个校验Long类型的方法

StrUtils.isLong(str);

校验手机号格式是否正确

cntool提供了最新的手机后格式校验方法👇

StrUtils.isPhone("phoneNum");

校验字符串是否为空

StrUtils.isBlank(str);

校验字符串是否不为空

StrUtils.isNotBlank(str);

判断字符串是否是全英文

判断字符串是否是全英文,可以直接使用str.matches("^[a-zA-Z]*")方法,但是这个方法对于中间有空格的英文字符串,判断返回结果是falsecntool工具类的isEnglish方法会先将字符串的所有空格去掉后再进行判断

//true全英文 false非全英文
StrUtils.isEnglish(str);

驼峰转下划线小写

该方法会将驼峰格式命名的字符串,转为小写下划线的形式

例:userName经过转换后为user_name

String str = "userName";
StrUtils.humpToUnderline(str);

IP工具类

获取IP地址

cntool0.0.4版本开始提供获取IP地址的方法

//0.0.4及以上版本
IpUtils.getIpAddr(request);

判断的是否是IP地址

cntool0.0.6版本开始,提供校验传入字符串是否是IP地址的方法,使用方法如下

//true是 false否
IpUtils.isIp(str);

根据字段名使用其对应的gettersetter方法

强制:传入的字段名必须与实体类中的字段名一致

通过字段名使用其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~20255,使用方法如下👇

// 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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ID-Tang

梦想支持度+1

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值