how2j.cn

-->
下载区
文件名 文件大小
hutool.rar 85k

解压rar如果失败,请用5.21版本或者更高版本的winrar

点击下载 winrar5.21
步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 模仿和排错   
步骤 3 : TestValidator   
步骤 4 : 归纳   

步骤 1 :

先运行,看到效果,再学习

edit
老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
运行 TestValidator
先运行,看到效果,再学习
在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程
package cn.how2j.test; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.TYPE; import java.lang.annotation.Documented; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Method; import org.junit.Test; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; public class TestValidator { @Test @Comment("校验器") public void test1() { String email ="123@qq.com"; boolean valid =Validator.isEmail(email); p2("邮件地址",email," 是否合法 ",valid); } private String preComment = null; private void c(String msg) { System.out.printf("\t备注:%s%n", msg); } private void p1(String type1, Object value1, String type2, Object value2) { p(type1, value1, type2, value2, "format1"); } private void p2(String type1, Object value1, String type2, Object value2) { p(type1, value1, type2, value2, "format2"); } private void p3(String type1, Object value1) { p(type1, value1, "", "", "format3"); } private void p(String type1, Object value1, String type2, Object value2, String format) { try { throw new Exception(); } catch (Exception e) { String methodName = getTestMethodName(e.getStackTrace()); Method m = ReflectUtil.getMethod(this.getClass(), methodName); Comment annotation = m.getAnnotation(Comment.class); if (null != annotation) { String comment = annotation.value(); if (!comment.equals(preComment)) { System.out.printf("%n%s 例子: %n%n", comment); preComment = comment; } } } int padLength = 12; type1 = StrUtil.padEnd(type1, padLength, Convert.toSBC(" ").charAt(0)); type2 = StrUtil.padEnd(type2, padLength, Convert.toSBC(" ").charAt(0)); if ("format1".equals(format)) { System.out.printf("\t%s的:\t\"%s\" %n\t被转换为----->%n\t%s的 :\t\"%s\" %n%n", type1, value1, type2, value2); } if ("format2".equals(format)) { System.out.printf("\t基于 %s:\t\"%s\" %n\t获取 %s:\t\"%s\"%n%n", type1, value1, type2, value2); } if ("format3".equals(format)) { System.out.printf("\t%s:\t\"%s\" %n\t%n", type1, value1); } } private String getTestMethodName(StackTraceElement[] stackTrace) { for (StackTraceElement se : stackTrace) { String methodName = se.getMethodName(); if (methodName.startsWith("test")) return methodName; } return null; } @Target({ METHOD, TYPE }) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Comment { String value(); } }
Validator 把一些常用的校验工具准备好了,提供给大家直接使用。
用法都很简单,这里站长稍做整理,归纳了一下。

为空判断
isNull
isEmpty
字母,数字和下划线
isGeneral
至少多长的
isGeneral(String value, int min)
给定范围的
isGeneral(String value, int min, int max)
数字
isNumber
给定范围的数字
isBetween(Number value, Number min, Number max)
纯字母
isLetter
大小写
isUpperCase
isLowerCase
ip4
isIpv4
金额
isMoney
邮件
isEmail
手机号码
isMobile
18位身份证
isCitizenId
邮编
isZipCode
出生年月日
isBirthday
URL
isUrl
汉字
isChinese
汉字,字母,数字和下划线
isGeneralWithChinese
mac地址
isMac
中国车牌
isPlateNumber
uuid
isUUID


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 应用-hutool-校验工具 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图