常用API(正則表達式、Date、DateFormat、Calendar)


常用API

今日內容介紹

u 正則表達式

u Date

u DateFormat

u Calendar

 

第1章 正則表達式

1.1 正則表達式的概念

正則表達式(英語:Regular Expression,在代碼中常簡寫為regex

正則表達式是一個字符串,使用單個字符串來描述、用來定義匹配規則,匹配一系列符合某個句法規則的字符串。在開發中,正則表達式通常被用來檢索、替換那些符合某個規則的文本。

1.2 正則表達式的匹配規則

參照幫助文檔,在Pattern類中有正則表達式的的規則定義,正則表達式中明確區分大小寫字母。我們來學習語法規則。

正則表達式的語法規則:

字符:x

含義:代表的是字符x

例如:匹配規則為 "a",那么需要匹配的字符串內容就是 ”a”

 

字符:\\

含義:代表的是反斜線字符'\'

例如:匹配規則為"\\" 那么需要匹配的字符串內容就是 ”\”

 

字符:\t

含義:制表符

例如:匹配規則為"\t" ,那么對應的效果就是產生一個制表符的空間

 

字符:\n

含義:換行符

例如:匹配規則為"\n",那么對應的效果就是換行,光標在原有位置的下一行

 

字符:\r

含義:回車符

例如:匹配規則為"\r" ,那么對應的效果就是回車后的效果,光標來到下一行行首

 

字符類:[abc]

含義:代表的是字符ab c

例如:匹配規則為"[abc]" ,那么需要匹配的內容就是字符a,或者字符b,或字符c的一個

 

字符類:[^abc]

含義:代表的是除了 ab c以外的任何字符

例如:匹配規則為"[^abc]",那么需要匹配的內容就是不是字符a,或者不是字符b,或不是字符c的任意一個字符

 

字符類:[a-zA-Z]

含義:代表的是a z A Z,兩頭的字母包括在內

例如:匹配規則為"[a-zA-Z]",那么需要匹配的是一個大寫或者小寫字母

 

字符類:[0-9]

含義:代表的是 09數字,兩頭的數字包括在內

例如:匹配規則為"[0-9]",那么需要匹配的是一個數字

 

字符類:[a-zA-Z_0-9]

含義:代表的字母或者數字或者下划線(即單詞字符)

例如:匹配規則為" [a-zA-Z_0-9] ",那么需要匹配的是一個字母或者是一個數字或一個下滑線

 

預定義字符類:.

含義:代表的是任何字符

例如:匹配規則為" . ",那么需要匹配的是一個任意字符。如果,就想使用 . 的話,使用匹配規則"\\."來實現

 

預定義字符類:\d

含義:代表的是 09數字,兩頭的數字包括在內,相當於[0-9]

例如:匹配規則為"\d ",那么需要匹配的是一個數字

 

預定義字符類:\w

含義:代表的字母或者數字或者下划線(即單詞字符),相當於[a-zA-Z_0-9]

例如:匹配規則為"\w ",,那么需要匹配的是一個字母或者是一個數字或一個下滑線

 

邊界匹配器:^

含義:代表的是行的開頭

例如:匹配規則為^[abc][0-9]$ ,那么需要匹配的內容從[abc]這個位置開始, 相當於左雙引號

 

邊界匹配器:$

含義:代表的是行的結尾

例如:匹配規則為^[abc][0-9]$ ,那么需要匹配的內容以[0-9]這個結束, 相當於右雙引號

 

邊界匹配器:\b

含義:代表的是單詞邊界

例如:匹配規則為"\b[abc]\b" ,那么代表的是字母abc的左右兩邊需要的是非單詞字符([a-zA-Z_0-9])

 

數量詞:X?

含義:代表的是X出現一次或一次也沒有

例如:匹配規則為"a?",那么需要匹配的內容是一個字符a,或者一個a都沒有

 

數量詞:X*

含義:代表的是X出現零次或多次

例如:匹配規則為"a*" ,那么需要匹配的內容是多個字符a,或者一個a都沒有

 

數量詞:X+

含義:代表的是X出現一次或多次

例如:匹配規則為"a+",那么需要匹配的內容是多個字符a,或者一個a

 

數量詞:X{n}

含義:代表的是X出現恰好 n

例如:匹配規則為"a{5}",那么需要匹配的內容是5個字符a

 

數量詞:X{n,}

含義:代表的是X出現至少 n

例如:匹配規則為"a{5, }",那么需要匹配的內容是最少有5個字符a

 

數量詞:X{n,m}

含義:代表的是X出現至少 n 次,但是不超過 m

例如:匹配規則為"a{5,8}",那么需要匹配的內容是有5個字符a 8個字符a之間

 

1.3 正則表達式規則匹配練習

請寫出滿足如下匹配規則的字符串:

規則:"[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后面有個bb必須為最后一個字符。

如:使用數據"aaaaab"進行匹配結果為true

使用數據"abc"進行匹配結果為false

 

1.4 字符串類中涉及正則表達式的常用方法

 

 

l public boolean matches(String regex) //判斷字符串是否匹配給定的規則

舉例:校驗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);

 

l public String[] split(String 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);

 

 

l public String replaceAll(String regex,String replacement) //將符合規則的字符串內容,全部替換為新字符串

舉例:把文字中的數字替換成*

代碼演示:

String s = "Hello12345World6789012";

String regex = "[0-9]";

String result = s.replaceAll(regex, "*");

1.5 正則表達式練習

l 匹配正確的數字

匹配規則:

匹配正整數:”\\d+”

匹配正小數:”\\d+\\.\\d+”  

匹配負整數:”-\\d+”

匹配負小數:”-\\d+\\.\\d+”

匹配保留兩位小數的正數:”\\d+\\.\\d{2}”

匹配保留1-3位小數的正數:”\\d+\\.\\d{1,3}”

 

l 匹配合法的郵箱

匹配規則:

”[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+”

”\\w+@\\w+(\\.\\w+)+”

 

獲取IP地址(192.168.1.100)中的每段數字

匹配規則:

”\\.”

 

第2章 Date

2.1 Date類概述

Date 表示特定的瞬間,精確到毫秒。

繼續查閱Date類的描述,發現Date擁有多個構造函數,只是部分已經過時,但是其中有未過時的構造函數可以把毫秒值轉成日期對象。

 

 

//創建日期對象,把當前的毫秒值轉成日期對象

Date date = new Date(1607616000000L);

System.out.println(date);

//打印結果:Fri Dec 11 00:00:00 CST 2020

可是將毫秒值轉成日期后,輸出的格式不利於我們閱讀,繼續查閱APIDate中有getYeargetMouth等方法,可以他們已經過時,繼續往下查閱,看到了toString方法。

 

 

點開toString()方法查閱,原來上面打印的date對象就是默認調用了這個toString方法,並且在這個方法下面還有讓我們參見toLocaleString方法,點進去,這個方法又過時了,從 JDK 1.1 開始,由 DateFormat.format(Date date) 取代。

既然這個方法被DateFormat.format(Date date) 取代,那么就要去查閱DateFormat類。

2.2 Date類常用方法

 

 

l 把日期對象轉換成對應的時間毫秒值

第3章 DateFormat

3.1 DateFormat類概述

DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)允許進行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和標准化。

我們通過這個類可以幫我們完成日期和文本之間的轉換。

繼續閱讀APIDateFormat 可幫助進行格式化並解析任何語言環境的日期。對於月、星期,甚至日歷格式(陰歷和陽歷),其代碼可完全與語言環境的約定無關。

3.2 日期格式

要格式化一個當前語言環境下的日期也就是日期 -> 文本),要通過下面的方法來完成。DateFormat是抽象類,我們需要使用其子類SimpleDateFormat來創建對象。

l 構造方法

 

 

l DateFormat類方法

 

 

代碼演示:

//創建日期格式化對象,在獲取格式化對象時可以指定風格

DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//對日期進行格式化

Date date = new Date(1607616000000L);

String str_time = df.format(date);

System.out.println(str_time);//20201211

l DateFormat類的作用:即可以將一個Date對象轉換為一個符合指定格式的字符串,也可以將一個符合指定格式的字符串轉為一個Date對象。

指定格式的具體規則我們可參照SimpleDateFormat類的說明,這里做簡單介紹,規則是在一個字符串中,會將以下字母替換成對應時間組成部分,剩余內容原樣輸出:

l 當出現y時,會將y替換成年

l 當出現M時,會將M替換成月

l 當出現d時,會將d替換成日

l 當出現H時,會將H替換成時

l 當出現m時,會將m替換成分

l 當出現s時,會將s替換成秒

3.3 DateFormat類常用方法

 

 

l format方法,用來將Date對象轉換成String

l parse方法,用來將String轉換成Date(轉換時,該String要符合指定格式,否則不能轉換)。

代碼演示:

練習一:把Date對象轉換成String

     Date date = new Date(1607616000000L);//Fri Dec 11 00:00:00 CST 2020

DateFormat df = new SimpleDateFormat(“yyyyMMdd”);

String str = df.format(date);

//str中的內容為20201211

 

練習二:把String轉換成Date對象

String str = ”20201211”;

DateFormat df = new SimpleDateFormat(“yyyyMMdd”);

Date date = df.parse( str );

//Date對象中的內容為Fri Dec 11 00:00:00 CST 2020

第4章 Calendar

4.1 Calendar類概念

Calendar是日歷類,在Date后出現,替換掉了許多Date的方法。該類將所有可能用到的時間信息封裝為靜態成員變量,方便獲取。

Calendar為抽象類,由於語言敏感性,Calendar類在創建對象時並非直接創建,而是通過靜態方法創建,將語言敏感內容處理好,再返回子類對象,如下:

l Calendar類靜態方法

 

 

Calendar c = Calendar.getInstance();  //返回當前時間

 

4.2 Calendar類常用方法

 

 

l public static Calendar getInstance() //獲取日期對象

l public int get(int field) //獲取時間字段值,字段參見幫助文檔

l YEAR 

l MONTH 月,從0開始算起,最大11;0代表1月,11代表12月。

l DATE 天

l HOUR 時

l MINUTE分

l SECOND秒

代碼演示

Calendar c = Calendar.getInstance();

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

 

l public void add(int field,int amount) //指定字段增加某值

代碼演示

Calendar c = Calendar.getInstance();

//修改當前時間為3天后

c.add(Calendar.DATE, 3);

//修改當前時間為5小時后

c.add(Calendar.HOUR, 5);

 

l public final void set(int field,int value)//設置指定字段的值

代碼演示

Calendar c = Calendar.getInstance();

//設置時間為2020520

c.set(Calendar.YEAR, 2020);

c.set(Calendar.MONTH, 4);

c.set(Calendar.DATE, 20);

 

l public final Date getTime() //獲取該日歷對象轉成的日期對象

代碼演示:

Calendar c = Calendar.getInstance();

Date d = c.getTime();

4.3 注意事項

西方星期的開始為周日,中國為周一。

Calendar類中,月份的表示是以0-11代表1-12月。

日期是有大小關系的,時間靠后,時間越大。

第5章 日期相關類練習

5.1 求出自己已經出生多少天

思路:

1.獲取當前時間對應的天數

2.獲取自己出生日期對應的天數

3.兩個時間相減(當前時間天數 – 出生日期天數)

代碼實現:

public static void main(String[] args){

Calendar my = Calendar.getInstance();

Calendar c = Calendar.getInstance();

//設置出生年月日 1995-05-10

my.set(Calendar.YEAR, 1995);

my.set(Calendar.MONTH, 4);

my.set(Calendar.DATE, 10);

//獲取時間中的天數

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

int myDay = my.get(Calendar.DATE);

System.out.println(day - myDay);

}

5.2 求出今天距離202011日還有多少天

思路:

1.獲取當前時間對應的天數

2.獲取202011日對應的天數

3.兩個時間相減(202011日的天數 –當前時間天數)

代碼實現:

public static void main(String[] args){

Calendar my = Calendar.getInstance();

Calendar c = Calendar.getInstance();

//設置年月日 2020-01-01

my.set(Calendar.YEAR, 2020);

my.set(Calendar.MONTH, 0);

my.set(Calendar.DATE, 1);

//獲取時間中的天數

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

int myDay = my.get(Calendar.DATE);

System.out.println(myDay - day);

}

 

 

第6章 總結

6.1 知識點總結

l 正則表達式:用來定義匹配規則,匹配一系列符合某個句法規則的字符串。

正則表達式的匹配規則

請參見1.2 正則表達式的匹配規則

正則表達式的常用方法:

public boolean matches(String regex) //判斷字符串是否匹配給定的規則

public String[] split(String regex)  //根據給定正則表達式的匹配規則,拆分此字符串

public String replaceAll(String regex,String replacement) //將符合規則的字符串內容,全部替換為新字符串

 

l Date: 日期/時間類

構造方法:

public Date()// 系統當前日期時間

public Date(long date) 得到一個1970110點這個時間基礎上,加上參數date 毫秒值對應的日期時間

方法:

public long getTime() 獲取日期所對應的毫秒值

 

l DateFormat:是日期/時間格式化子類的抽象類, 使用其子類SimpleDateFormat 實例化

構造方法:

public SimpleDateFormat() 默認的格式化操作

public SimpleDateFormat(String pattern) 按照指定的格式,進行日期格式化

日期和時間模式

y  年  

M  年中的月份  

d  月份中的天數

H  一天中的小時數(0-23

m  小時中的分鍾數

s  分鍾中的秒數

S  毫秒數

方法:

public final String format(Date date) 把日期 格式化成字符串

public Date parse(String source) 把日期字符串 轉換成 日期對象

 

l Calendar:日歷類,可獲取日期中指定字段的值

方法:

public static Calendar getInstance() //獲取日期對象

public int get(int field) //獲取時間字段值

public void add(int field,int amount) //指定字段增加某值

public final void set(int field,int value)//設置指定字段的值

public final Date getTime() //獲取該日歷對象轉成的日期對象

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM