正則表達式(Regular Expression ,在代碼中常簡寫爲regex)正則表達式
正則表達式是一個字符串,使用單個字符串來描述、用來定義匹配規則,匹配一系列符合某個句法規則的字符串。在開發中,正則表達式一般被用來檢索、替換那些符合某個規則的文本ide
參照幫助文檔,在Pattern類中有正則表達式的的規則定義,正則表達式中明確區分大小寫字母。咱們來學習語法規則函數
正則表達式的語法規則學習
請寫出知足以下匹配規則的字符串:ui
規則:"[0-9]{6,12}" 該規則須要匹配的內容是:長度爲6位到12位的數字。 如:使用數據"123456789"進行匹配結果爲true; 使用數據"12345"進行匹配結果爲false。 規則:"1[34578][0-9]{9}" 該規則須要匹配的內容是:11位的手機號碼,第1位爲1,第2位爲3、4、5、7、8中的一個,後面9位爲 0到9之間的任意數字。 如:使用數據"12345678901"進行匹配結果爲false; 使用數據"13312345678"進行匹配結果爲true。 規則:"a*b" 該規則須要匹配的內容是:在多個a或零個a後面有個b;b必須爲最後一個字符。 如:使用數據"aaaaab"進行匹配結果爲true; 使用數據"abc"進行匹配結果爲false
舉例:校驗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位爲3、4、5、7、8中的一個,後面9位爲0到9之間的任意數字。 代碼演示: String phone = "18800022116"; String regex = "1[34578][0-9]{9}"; boolean flag = phone.matches(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);
舉例:把文字中的數字替換成* 代碼演示: String s = "Hello12345World6789012"; String regex = "[0-9]"; String result = s.replaceAll(regex, "*");
匹配規則: 匹配正整數:」\\d+」 匹配正小數:」\\d+\\.\\d+」 匹配負整數:」-\\d+」 匹配負小數:」-\\d+\\.\\d+」 匹配保留兩位小數的正數:」\\d+\\.\\d{2}」 匹配保留1-3位小數的正數:」\\d+\\.\\d{1,3}」
匹配規則: 」[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+」 」\\w+@\\w+(\\.\\w+)+」
」\\.」
類 Date 表示特定的瞬間,精確到毫秒。 繼續查閱Date類的描述,發現Date擁有多個構造函數,只是部分已通過時,可是其中有未過期的構造函數能夠把毫秒值轉成日期對象spa
//建立日期對象,把當前的毫秒值轉成日期對象 Date date = new Date(1607616000000L); System.out.println(date); //打印結果:Fri Dec 11 00:00:00 CST 2020
但是將毫秒值轉成日期後,輸出的格式不利於咱們閱讀,繼續查閱API,Date中有getYear、getMouth等方法,能夠他們已通過時,繼續往下查閱,看到了toString方法code
點開toString()方法查閱,原來上面打印的date對象就是默認調用了這個toString方法,而且在這個方法下面還有讓咱們參見toLocaleString方法,點進去,這個方法又過期了,從 JDK 1.1 開始,由 DateFormat.format(Date date) 取代。 既然這個方法被DateFormat.format(Date date) 取代,那麼就要去查閱DateFormat類orm
DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat類)容許進行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和標準化xml
咱們經過這個類能夠幫咱們完成日期和文本之間的轉換對象
繼續閱讀API,DateFormat 可幫助進行格式化並解析任何語言環境的日期。對於月、星期,甚至日曆格式(陰曆和陽曆),其代碼可徹底與語言環境的約定無關
要格式化一個當前語言環境下的日期也就是日期 -> 文本),要經過下面的方法來完成。DateFormat是抽象類,咱們須要使用其子類SimpleDateFormat來建立對象
代碼演示: //建立日期格式化對象,在獲取格式化對象時能夠指定風格 DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//對日期進行格式化 Date date = new Date(1607616000000L); String str_time = df.format(date); System.out.println(str_time);//2020年12月11日
ateFormat類的做用:便可以將一個Date對象轉換爲一個符合指定格式的字符串,也能夠將一個符合指定格式的字符串轉爲一個Date對象
指定格式的具體規則咱們可參照SimpleDateFormat類的說明,這裏作簡單介紹,規則是在一個字符串中,會將如下字母替換成對應時間組成部分,剩餘內容原樣輸出
當出現y時,會將y替換成年
當出現M時,會將M替換成月
當出現d時,會將d替換成日
當出現H時,會將H替換成時
當出現m時,會將m替換成分
當出現s時,會將s替換成秒
代碼演示: 練習一:把Date對象轉換成String Date date = new Date(1607616000000L);//Fri Dec 11 00:00:00 CST 2020 DateFormat df = new SimpleDateFormat(「yyyy年MM月dd日」); String str = df.format(date); //str中的內容爲2020年12月11日 練習二:把String轉換成Date對象 String str = 」2020年12月11日」; DateFormat df = new SimpleDateFormat(「yyyy年MM月dd日」); Date date = df.parse( str ); //Date對象中的內容爲Fri Dec 11 00:00:00 CST 2020
Calendar是日曆類,在Date後出現,替換掉了許多Date的方法。該類將全部可能用到的時間信息封裝爲靜態成員變量,方便獲取
Calendar爲抽象類,因爲語言敏感性,Calendar類在建立對象時並不是直接建立,而是經過靜態方法建立,將語言敏感內容處理好,再返回子類對象
public static Calendar getInstance() //獲取日期對象
public int get(int field) //獲取時間字段值,字段參見幫助文檔
代碼演示: Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR);
public void add(int field , int amount) // 指定字段增長某值
代碼演示: Calendar c = Calendar.getInstance(); //修改當前時間爲3天后 c.add(Calendar.DATE, 3); //修改當前時間爲5小時後 c.add(Calendar.HOUR, 5);
代碼演示: Calendar c = Calendar.getInstance(); //設置時間爲2020年5月20日 c.set(Calendar.YEAR, 2020); c.set(Calendar.MONTH, 4); c.set(Calendar.DATE, 20);
代碼演示: Calendar c = Calendar.getInstance(); Date d = c.getTime();
注意
西方星期的開始爲週日,中國爲週一。 在Calendar類中,月份的表示是以0-11表明1-12月。 日期是有大小關係的,時間靠後,時間越大
求出本身已經出生多少天
public static void main(String[] args){ Calendar c = Calendar.getInstance(); c.set(2017, 6, 31);// 2017 - 7 - 31 long i1 = c.getTimeInMillis(); System.out.println(i1); Calendar c2 = Calendar.getInstance(); long i2 = c2.getTimeInMillis(); System.out.println((i2-i1)*1.0/(1000*60*60*24)); }
求出今天距離2020年1月1日還有多少天
public static void main(String[] args){ Calendar c = Calendar.getInstance(); c.set(2017, 6, 31);// 2017 - 7 - 31 long i1 = c.getTimeInMillis(); System.out.println(i1); Calendar c2 = Calendar.getInstance(); long i2 = c2.getTimeInMillis(); System.out.println((i2-i1)*1.0/(1000*60*60*24)); }
正則表達式:用來定義匹配規則,匹配一系列符合某個句法規則的字符串。
正則表達式的匹配規則 請參見1.2 正則表達式的匹配規則 正則表達式的經常使用方法:
Date: 日期/時間類
構造方法:
DateFormat:是日期/時間格式化子類的抽象類, 使用其子類SimpleDateFormat 實例化
Calendar:日曆類,可獲取日期中指定字段的值