正则表达式和其他一些类

正则表达式:

(1)按照正确的规则组成的一个字符串。

 

(2)规则:

A:基本字符

x 字符x

\\ 反斜线字符

\r 回车符

\n 换行符

B:字符类

[abc] a、b或 c 

[^abc] 任何字符,除了 a、b 或 c 

[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内 

[0-9] 数字0-9

C:预定义字符类

. 任何字符

\d 数字:[0-9] 

\w 单词字符:[a-zA-Z_0-9] 

在正则表达式里面只有这些字符被称为单词字符。

D:边界匹配器

^ 行的开头 

$ 行的结尾 

\b 单词边界(也就是说这里不能是单词字符)

    hello;haha xixi?

 

E:Greedy 数量词 

X? X,一次或一次也没有 

X* X,零次或多次 

X+ X,一次或多次 

X{n} X,恰好 n 次 

X{n,} X,至少 n 次 

X{n,m} X,至少 n 次,但是不超过 m 次 

 

 

 

(3)常见功能:

A:判断功能

String类的matches()方法

B:分割功能

String类的split()方法

C:替换功能

String类的replaceAll()方法

D:获取功能

Pattern和Matcher类的组合使用。

find()和group()

案例:

import java.util.Scanner;

 

/*

 * 正则表达式:符合一定规则的字符串。

 * 

 * 需求:

 *  校验QQ号码:

 *  A:长度是5-15位

 *  B:不能以0开头

 *  C:只能是数字字符

 */

public class RegexDemo {

         public static void main(String[] args) {

                   // 封装键盘录入

                  Scanner sc = new Scanner(System.in);

 

                // 键盘输入数据

                System.out.println("请输入QQ号码:");

                String qq = sc.nextLine();

                boolean flag = checkQQ(qq);

                          System.out.println(flag);

 

               // 用正则表达式改进版

               boolean flag2 = checkQQ2(qq);

                        System.out.println(flag2);

             }

 

            // 用正则表达式改进

            public static boolean checkQQ2(String qq) {

                      // 定义一个规则

                     // String regex = "[1-9][0-9]{4,14}";

          // 判断

         // public boolean matches(String regex)

        // boolean flag = qq.matches(regex);

        // return flag;

       // return qq.matches("[1-9][0-9]{4,14}");

          return qq.matches("[1-9]\\d{4,14}");

         }

 

         // 写一个功能完成该校验

        // 返回值类型:boolean

      // 参数列表:String qq

     public static boolean checkQQ(String qq) {

                boolean flag = true;

 

               // 长度是5-15位

               if (qq.length() >= 5 && qq.length() <= 15) {

                     // 不能以0开头

                     if (!qq.startsWith("0")) {

                                // 只能是数字字符

                               // 把字符串转成字符数组,遍历字符数组,获取到每一个字符,然后判断是否是数字字符,如果不是,直接flag=false,break。

                               char[] chs = qq.toCharArray();

                  for (int x = 0; x < chs.length; x++) {

                        char ch = chs[x];

                       if (!(ch >= '0' && ch <= '9')) {

                              flag = false;

                              break;

                       }

                  }

 

                     } else {

                         flag = false;

                              }

                     } else {

                           flag = false;

                    }

 

                              return flag;

         }

}

 

 

System类:

(1)提供了一些有用的类字段或者方法,不能被实例化。

(2)成员方法:

      exit():终止jvm。

      currentTimeMillis():获取当前系统时间,将来可用于测试程序运行时间。

 

5:Date,DateFormat,Calendar

(1)Date:日期类。

A:构造方法

Date()

Date(long time)

B:成员方法

getTime()

setTime()

C:日期和毫秒值的转换:

如何从日期到毫秒值

getTime()

如何从毫秒值到日期

构造方法

setTime()

 

 

(2)DateFormat对日期进行格式化和解析

A:Date -- String

String format(Date d):把日期格式化成一个字符串。

yyyy-MM-dd HH:mm:ss

B:String -- Date

Date parse(String s):把字符串解析成一个日期。

注意:要求格式和字符串的数据要对应。

 

 

(3)Calendar:日历类

A:通过get方法获取所有日历字段对应的值。

int get(int field)

B:通过set方法设置日历对象的年月日

set(int year,int month,int date)

C:通过add方法加或者减去指定日历字段的时间

add(int field,int number)

     案例:

import java.util.Calendar;

import java.util.Scanner;

 

/*

 * Calendar:日历类。把每个日历字段都可以单独获取。

 * 

 * 功能:

 *  public int get(int field):根据给定的日历字段返回对应的数值。

 *  public final void set(int year,int month,int date):设置日历的年月日

 *  public void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量

 */

public class CalendarDemo {

            public static void main(String[] args) {

                         Calendar rightNow = Calendar.getInstance(); // 其实右边是一个子类对象。这里用到了多态

                         // rightNow.set(2012, 8, 8);

 

                        rightNow.add(Calendar.YEAR, 3);

                         rightNow.add(Calendar.DATE, -5);

 

                      // 获取年

                     // public int get(int field):根据给定的日历字段返回对应的数值。

                    // public static final int YEAR

                    int year = rightNow.get(Calendar.YEAR);

                          System.out.println(year);

 

                    innt month = rightNow.get(Calendar.MONTH);

                            System.out.println(month + 1);

 

                   int date = rightNow.get(Calendar.DATE);

                          System.out.println(date);

 

               // 需求:我给你任意一个年份,请告诉我2月份有多少天?

               Calendar c = Calendar.getInstance(); // 获取当前日历时间

                Scanner sc = new Scanner(System.in);

                                    System.out.println("请输入年份:");

                            int y = sc.nextInt();

                            c.set(y, 2, 1);// xx年的3月1日。

                            c.add(Calendar.DATE, -1);

                            int d = c.get(Calendar.DATE);

                                         System.out.println(d);

        }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值