正则表达式、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]);
        }
    }
}

 

posted @ 2019-05-25 10:19  zhansen521  阅读(336)  评论(0编辑  收藏  举报