正则表达式、Date类、DateFormat类、Calendar(日历类)
正则表达式(英语:Regular Expression,在代码中常简写为regex) 它是一个字符串
正则表达式:验证字符串 检索、替换某个规则的文本
规则:区分大小写,
编号 | 字符 | 含义 |
字符 | x | 字符x |
\\ | 反斜线字符‘\’ (一个\是转义的意思) | |
\t | 制表符 | |
\n | 换行符 | |
\r | 回车符 | |
字符类 | [abc] |
字符a或者b或者c (注意 [ ] 里面代表一位!) 例:13864399999:[1-9][3578][0-9]{9} 一个[] 是一位数字 [3578] 是第二位 [0-9]{9}:一位0-9出现9次 |
[^abc] | 取反 a、b、c以外的任何一个字符 | |
[a-zA-Z] | a到z或者A到Z,包括两头的字母 | |
[0-9] | 0到9数字,两头的数字包括在内,任意一个数字 | |
[a-zA-Z_0-9] | 字母或数字或下划线 匹配的是一个 字母、数字、下划线(即单词字符) |
|
预定义字符类 | . | 任何字符(就想使用 . 的话,使用匹配规则"\\."来实现) |
\d | 0到9数字,两头的数字包括在内,相当于[0-9] 字母大写就取反 | |
\w | 字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9] 字母大写就取反 | |
^ | 行的开头 | |
$ |
行的结尾 |
|
\b | 单词边界 | |
数量词 | x? | X出现一次或一次也没有 0/1 |
x* | X出现零次或多次 非1 | |
x+ | X出现一次或多次 >0 | |
x{n} | X出现恰好 n 次 | |
x{n,} | X出现至少 n 次 | |
x{n,m} | X出现至少 n 次,但是不超过 m 次 |
字符串类正则表达式三种方法
matches 字符串是否匹配正则
package com.oracle.demo01; //正则表达式 boolean方法 public class Demo01 { public static void main(String[] args) { /*校验QQ * 1:要求5-15位数字 * 2:0不能开头 */ String QQ="329027486"; //描述规则 String regex="[1-9][0-9]{4,14}";//数量词 X{n,m}x至少出现4次,不超14次 boolean flag=QQ.matches(regex); System.out.println(flag); } }
split 按照规则分割
package com.oracle.demo01; //正则表达式 split public class Demo02 { public static void main(String[] args) { String reg="-"; String str="178-6930-8888"; String[] s=str.split(reg); //遍历 for(int i=0;i<s.length;i++){ System.out.println(s[i]); } } }
ReplaceAll方法
package com.oracle.demo01; //正则表达式 replaceAll 方法 public class Demo03 { public static void main(String[] args) { String str="nihao999hello9aa4"; String reg="[0-9]+";//+号代表 只显示一个* //把里面每一位数字 都替换成 * String s=str.replaceAll(reg,"*"); System.out.println(s); } }
package com.oracle.demo01; //校验 邮箱用正则表达式 public class Demo04 { public static void main(String[] args) { String email="329027486@qq.com"; //()里面代表 如果 .com后面还有 .cn的话 用()+ String reg="[0-9A-Za-z_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)";//+代表1到多次 boolean flag=email.matches(reg); System.out.println(flag); //上面的 [0-9A-Za-z_] 可以用 [\\w] 效果一样 String reg1="[\\w]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)"; boolean flag1=email.matches(reg1); System.out.println(flag); } }
PM
Date
CST::中国标准时间
需要掌握,两个方法,一个空参构造,一个有参构造,一个toString方法,一个getTime方法
package com.oracle.demo02; //两个构造方法 import java.util.Date; public class Demo01 { public static void main(String[] args) { //获取系统时间的毫秒值 long time=System.currentTimeMillis(); System.out.println(time); //创建当前系统时间日期 Date date=new Date(); System.out.println(date);//默认显示字符串因为默认字符串是String类型 //创建指定毫秒值所对应的日期对象 Date date2=new Date(100000000000L); System.out.println(date2); //获取指定日期对象所对应的毫秒值 //用getTime方法 long time2=date.getTime(); System.out.println(time2); } }
DateFormat
DateFormat 是日期/时间格式化子类的抽象类
格式:
构造方法
package com.oracle.demo02; import java.text.ParseException; //DateFormat方法 parse方法 import java.text.SimpleDateFormat; import java.util.Date; public class Demo02 { public static void main(String[] args) throws ParseException { String partten="yyyy年MM月dd日HH:mm:ss"; //构造方法构建 SimpleDateFormat sdf=new SimpleDateFormat(partten); //当前系统日期时间对象 Date date=new Date(); //将Date对象转成字符串 String str=sdf.format(date); System.out.println(str); //将String转成 Date对象 String time="1997年09月19日11:30:00"; Date date2=sdf.parse(time); System.out.println(date2); } }
注意:partten 后面的日期格式,跟下面的一定要一模一样
Calendar
Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量
常用方法:
package com.oracle.demo02; //Calendar日历类方法 import java.util.Calendar; import java.util.Date; public class Demo03 { public static void main(String[] args) { //获取当前时间的日历类对象 Calendar c=Calendar.getInstance(); System.out.println(c); //给日历对象的指定字端添加或减去时间量 c.add(Calendar.DATE, 2);//add是偏移的 c.add(Calendar.HOUR,-2);//两个小时以前用hour System.out.println(c); //获取日历对象的指定字段的值 System.out.println(c.get(Calendar.MONTH)); //将日历对象转为日期类对象 Date date=c.getTime(); System.out.println(date); //给日历类对象设置指定的值 c.set(1997,8,19,11,30,0); System.out.println(c.getTime()); } }
注意:
西方星期的开始为周日,中国为周一。
在Calendar类中,月份的表示以0-11代表1-12月。
日期是有大小关系的,时间靠后,时间越大。
作业:
package zuoye; public class zhengzezuoye { public static void main(String[] args) { //1.对输入的qq号进行匹配(qq匹配规则:长度为5-10位,纯数字组成,且不能以0开头 String QQ="329027486"; //规则:长度为5-10位,纯数字组成,且不能以0开头 String regex="[1-9]{3}[0-9]{6}"; boolean q=QQ.matches(regex); System.out.println(q); /*2.对输入的电话号码进行匹配(匹配要求:匹配成功的电话号码位数为11位的纯数字,且以1开头,第二位必须是:3、7、8中的一位, 即只匹配13*********、17*********、18*********的电话号码)*/ String tel="13106439435"; String regex1="[1][3,7,8]\\d{9}"; boolean T=tel.matches(regex1); System.out.println(T); //3.对字符串“张三@@@李四@@王五@茅台”进行切割,去掉@符号。 String reg="@"; String str="张三@@@李四@@王五@茅台"; String[] s=str.split(reg); for(int i=0;i<s.length;i++){ System.out.print(s[i]); } } }