Java学习笔记(九)--Calendar类 正则表达式

来源:互联网 发布:电脑抽奖软件下载 编辑:程序博客网 时间:2024/05/18 16:13

Calendar类

1.Calendar(日历类):获取年,获取月,获取日,获取时,获取分,获取秒。
2.public int get(int field):返回给定日历字段的值。
3.调用 Calendar 类的 getInstance() 方法获取一个实例,然后通过调用 get() 方法获取日期时间信息,参数为需要获得的字段的值, Calendar.Year 等为 Calendar 类中定义的静态常量。

Calendar c = Calendar.getInstance();//获取Calendar对象int year=c.get(Calendar.YEAR);//获取年int month=c.get(Calendar.MONTH)+1;//获取月份,0表示1月份int day=c.get(Calendar.DAY_OF_MONTH);//获取日int hour=c.get(Calendar.HOUR_OF_DAY);//获取时int minute=c.get(Calendar.MINUTE);//获取分int second=c.get(Calendar.SECOND);//获取秒

4.Calendar类提供了getTime()方法,来获取Date对象,完成Calendar和Date的转换。

Date date=c.getTime();

5.getTimeInMillis():获取当前Clendar的毫秒值。

long time=c.getTimeInMillis();

6.puublic void add(int field,int amount):根据amount修改filed的值。
public void set(int year,int month,int date):设置当前日历的年月日。

需求:键盘录入年份,获取任意一年的二月有多少天。

package com.edu.calendar;import java.util.Calendar;import java.util.Scanner;public class CalendarTest {    public static void main(String[] args) {        /**         * 1.获取年份         * 2.将日历对象的时间调到,此年的3月的第一天         * 3.将日期对象向前推一天         * 4.获取此天的日期         */        System.out.println("请输入年份");        Scanner sc = new Scanner(System.in);        int year = sc.nextInt();        // 2.将日历对象的时间调到,此年的3月的第一天        Calendar c = Calendar.getInstance();        c.set(year, 2, 1);        //3.将日期对象向前推一天        c.add(Calendar.DATE, -1);        //4.获取此天的日期        System.out.println("该年的二月有"+c.get(Calendar.DATE));    }}

正则表达式

1.正则表达式是由普通字符(如英文字母)以及特殊字符(也称为元字符)组成的文字模式。该模式对文本查找时需要匹配的一个或多个字符串描述,给出一个匹配模板。
2.英文句点符号:匹配单个任意字符。
eg:
表达式”t。o 可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。
3.方括号:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。
eg:
表达式:t[abcd]n 只可以匹配:tan,tbn,tcn,tdn。不可以匹配:thn,tabn,tn等。
4. | 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。
eg:
表达式:t(a|b|c|dd)n 只可以匹配:tan,tbn,tcn,tddn。不可以匹配taan,tn,tabcn
5.表示匹配次数的符号:
*:0次或多次
+:1次或多次
?:0次或1次
{n}:恰好n次
{n,m}:从n到m次
{n,}:至少n次
eg:
表达式:[0—9]{ 3 } \— [0-9]{ 2 } \— [0-9]{ 3 } 的匹配格式为:999—99—999
因为“—”符号在正则表达式中有特殊的含义,它表示一个范围,所以在前面加转义字符“\”。
6.^符号:表示否
^符号被称为“否”符号,如果用在方括号内,“^“表示不想匹配的字符。
eg:
表达式:[^x] 第一个字符不能是x
7.圆括号,和空白符号
“\s”是空白符号,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。
()是分组号,可以用ORO API提取处出值,后面将详细讨论。
8.正则表达式的一些快捷符号:
\d表示[0—9], \D表示[^0—9], \w表示[0—9A—Z_a—z],
\W表示[^0—9A—Z_a—z], \s表示[\t\n\r\f], \S表示[^\t\n\r\f]
9.一些常用的正则表达式:
Java:
(([a-z]|_)(\w*)){6,20}匹配以字母或下划线开头,字母数字下划线结尾的字符串。

JavaScript:
/^(-?)(\d+)//\w+/匹配字母数字下划线。
.+ 一个或多个字符。
/0 第一次匹配的字符串。
10. java类中使用正则表达式:
eg1:
Pattern p = Pattern.compile(“t.n”);
Matcher m = p.matcher(“ton”);
if(m.matches()){
return true;
}
eg2:boolean bool=Pattern.matches (“t.n”,”ton”);
如果一个正则表达式要重复利用,用第一种,如果只匹配一次,第二种是最佳选择。
11.反斜线字符(‘\’)用于转义字符,同时还可以引用非转义字符(不包括非转义字母)
因此‘\’表示‘\’,‘{’表示{。 但是‘\y’就是错的,因为在不表示转义构造的 任何字母字符前 使用反斜线都是错误的。
12.判断功能:
public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
需求:找出规则,写出正则(1[38][0-9]{9}),校验电话号码。

public class RegexDemo {    public static void main(String[] args) {        /*13245678901 13332345678 13456789012 18812345678 18999999999          18666666666 18786868686         */        String number = "13245678901";        //正则表达式        String reg = "1[38][0-9]{9}";        //调用maches(String reg)进行判断指定字符串是否匹配指定的正则表达式        boolean flag = number.matches(reg);        System.out.println(flag);    }}

13.分割功能:
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
需求:分割如下字符串:String s = “D:\baidu\20160826\day14”;

public class RegexDemo {    public static void main(String[] args) {        //String s = "D:\\baidu\\20160826\\day14";        String s = "D:\\baidu\\20160826\\day14";        String reg = "\\\\";        String[] strs = s5.split(reg);        for (int i = 0; i < strs.length; i++) {            System.out.println(strs[i]);        }    }}

14.替换功能:
public String replaceAll(String regex,String replacement):把符合regex的用replacement替换。
需求:字符串中的数字使用*代替。

public class RegexDemo6 {    public static void main(String[] args) {        String s = "我的银行卡号是:6102344354565";        String reg = "[0-9]";        String newStr = s.replaceAll(reg, "*");        System.out.println(newStr);    }}
0 0