常用API2 正则表达式

时间:2019-04-18 17:35:48   收藏:0   阅读:118

正则表达式

正则表达式的概念

正则表达式(Regular Expression ,在代码中常简写为regex)

正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本


正则表达式的匹配规则

参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母。我们来学习语法规则

正则表达式的语法规则
























正则表达式规则匹配练习

请写出满足如下匹配规则的字符串:

    规则:"[0-9]{6,12}"
    该规则需要匹配的内容是:长度为6位到12位的数字。
    如:使用数据"123456789"进行匹配结果为true使用数据"12345"进行匹配结果为false规则:"1[34578][0-9]{9}"
    该规则需要匹配的内容是:11位的手机号码,第1位为1,第2位为34578中的一个,后面9位为
    09之间的任意数字。
    如:使用数据"12345678901"进行匹配结果为false使用数据"13312345678"进行匹配结果为true规则:"a*b"
    该规则需要匹配的内容是:在多个a或零个a后面有个b;b必须为最后一个字符。
    如:使用数据"aaaaab"进行匹配结果为true使用数据"abc"进行匹配结果为false

字符串类中涉及正则表达式的常用方法

技术分享图片

    举例:校验qq号码.
	1: 要求必须是5-15位数字
	2: 0不能开头
    代码演示:
    	String qq = "604154942";
    	String regex = "[1-9][0-9]{4,14}";
    	boolean flag2 = qq.matches(regex);
    
    举例:校验手机号码
    	1:要求为11位数字
    2:第1位为1,第2位为34578中的一个,后面9位为09之间的任意数字。
    代码演示:
    	String phone = "18800022116";
    	String regex = "1[34578][0-9]{9}";
    	boolean flag = phone.matches(regex);

    举例:分割出字符串中的的数字
    代码演示:
    String s = "18-22-40-65";
    	String regex = "-";
    	String[] result = s.split(regex);
    代码演示:
    	String s = "18 22 40 65";
    	String regex = " ";
    	String[] result = s.split(regex);

    举例:把文字中的数字替换成*
    代码演示:
    	String s = "Hello12345World6789012";
    	String regex = "[0-9]";
    	String result = s.replaceAll(regex, "*");


正则表达式练习

    匹配规则:
	匹配正整数:”\\d+匹配正小数:”\\d+\\.\\d+匹配负整数:”-\\d+匹配负小数:”-\\d+\\.\\d+匹配保留两位小数的正数:”\\d+\\.\\d{2}匹配保留1-3位小数的正数:”\\d+\\.\\d{1,3}
    匹配规则:
	[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+”\\w+@\\w+(\\.\\w+)+
    \\.

Date

Date类的概述

类 Date 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象

技术分享图片

    //创建日期对象,把当前的毫秒值转成日期对象
    Date date = new Date(1607616000000L);
    System.out.println(date);
    //打印结果:Fri Dec 11 00:00:00 CST 2020

可是将毫秒值转成日期后,输出的格式不利于我们阅读,继续查阅API,Date中有getYear、getMouth等方法,可以他们已经过时,继续往下查阅,看到了toString方法

技术分享图片

点开toString()方法查阅,原来上面打印的date对象就是默认调用了这个toString方法,并且在这个方法下面还有让我们参见toLocaleString方法,点进去,这个方法又过时了,从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。 既然这个方法被DateFormat.format(Date date) 取代,那么就要去查阅DateFormat类

Date类常用方法

技术分享图片


DateFormat

DateFormat 类概述

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化

我们通过这个类可以帮我们完成日期和文本之间的转换

继续阅读API,DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关

日期格式

要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象

技术分享图片

技术分享图片

    代码演示:
    //创建日期格式化对象,在获取格式化对象时可以指定风格
    DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//对日期进行格式化
    Date date = new Date(1607616000000L);
    String str_time = df.format(date);
    System.out.println(str_time);//2020年12月11

DateFormat类常用方法

技术分享图片

    代码演示:
    练习一:把Date对象转换成String
         Date date = new Date(1607616000000L);//Fri Dec 11 00:00:00 CST 2020
    	DateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”);
    	String str = df.format(date);
    	//str中的内容为2020年12月11练习二:把String转换成Date对象
    	String str = 20201211日”;
    	DateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”);
    	Date date = df.parse( str );
    	//Date对象中的内容为Fri Dec 11 00:00:00 CST 2020


Calendar

Calendar类概念

Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象

技术分享图片

Calendar 类常用方法

技术分享图片

    代码演示:
	Calendar c = Calendar.getInstance();
	//修改当前时间为3天后
	c.add(Calendar.DATE, 3);
	//修改当前时间为5小时后
	c.add(Calendar.HOUR, 5);
    代码演示:
	Calendar c = Calendar.getInstance();
	//设置时间为2020年5月20c.set(Calendar.YEAR, 2020);
	c.set(Calendar.MONTH, 4);
	c.set(Calendar.DATE, 20);
    代码演示:
    Calendar c = Calendar.getInstance();
	Date d = c.getTime();

注意

西方星期的开始为周日,中国为周一。 在Calendar类中,月份的表示是以0-11代表1-12月。 日期是有大小关系的,时间靠后,时间越大


日期相关类练习


总结

构造方法:

原文:https://www.cnblogs.com/zcq-Test/p/10730946.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!