摘要:正則表達(dá)式的概念和作用正則表達(dá)式的概念和作用正則表達(dá)式的概述正則表達(dá)式也是一個(gè)字符串,用來定義匹配規(guī)則,在類中有簡(jiǎn)單的規(guī)則定義??梢越Y(jié)合字符串類的方法使用。簡(jiǎn)單記正則表達(dá)式是具有特殊含義的字符串。
01正則表達(dá)式的概念和作用
* A: 正則表達(dá)式的概念和作用 * a: 正則表達(dá)式的概述 * 正則表達(dá)式也是一個(gè)字符串,用來定義匹配規(guī)則,在Pattern類中有簡(jiǎn)單的規(guī)則定義。 可以結(jié)合字符串類的方法使用。 * 簡(jiǎn)單記:正則表達(dá)式是具有特殊含義的字符串。 * b: 正則表達(dá)式的作用 * 比如注冊(cè)郵箱,郵箱有用戶名和密碼,一般會(huì)對(duì)其限制長度,這個(gè)限制長度的事情就是正則表達(dá)式做的02正則表達(dá)式語法規(guī)則
* A: 正則表達(dá)式語法規(guī)則 * a: 字符 * x 代表的是字符x * 代表的是反斜線字符"" * 代表的是制表符 * 代表的是換行符 * 代表的是回車符 * b: 字符類 * [abc] a、b 或 c(簡(jiǎn)單類) * [^abc] 任何字符,除了 a、b 或 c(否定) * [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(nèi)(范圍) * [0-9] 0到9的字符都包括 * [a-zA-Z_0-9] 代表的字母或者數(shù)字或者下劃線(即單詞字符) * c: 預(yù)定義字符類 * . 任何字符。 * d 數(shù)字:[0-9] * w 單詞字符:[a-zA-Z_0-9]如"com.itheima.tests"/finish * d: 邊界匹配器 * ^ 代表的是行的開頭 * $ 代表的是行的結(jié)尾 * 代表的是單詞邊界 * e: 數(shù)量詞 * X? X,一次或一次也沒有 * X* X,零次或多次 * X+ X,一次或多次 * X{n} X,恰好 n 次 * X{n,} X,至少 n 次 * X{n,m} X,至少 n 次,但是不超過 m 次03正則表達(dá)式練習(xí)和相關(guān)的String類方法
* A: 正則表達(dá)式練習(xí)和相關(guān)的String類方法 * a: boolean matches(String 正則的規(guī)則) * "abc".matches("[a]") * 匹配成功返回true * b: String[] split(String 正則的規(guī)則) * "abc".split("a") * 使用規(guī)則將字符串進(jìn)行切割 * c: String replaceAll( String 正則規(guī)則,String 字符串) * "abc0123".repalceAll("[d]","#") * 按照正則的規(guī)則,替換字符串04正則表達(dá)式匹配練習(xí)
* A: 正則表達(dá)式匹配練習(xí) * a: 案例代碼 public class RegexDemo { public static void main(String[] args) { checkTel(); } /* * 檢查手機(jī)號(hào)碼是否合法 * 1開頭 可以是34578 0-9 位數(shù)固定11位 */ public static void checkTel(){ String telNumber = "1335128005"; //String類的方法matches boolean b = telNumber.matches("1[34857][d]{9}"); System.out.println(b); } /* * 檢查QQ號(hào)碼是否合法 * 0不能開頭,全數(shù)字, 位數(shù)5,10位 * 123456 * d D匹配不是數(shù)字 */ public static void checkQQ(){ String QQ = "123456"; //檢查QQ號(hào)碼和規(guī)則是否匹配,String類的方法matches boolean b = QQ.matches("[1-9][d]{4,9}"); System.out.println(b); } }05正則表達(dá)式切割練習(xí)
* A: 正則表達(dá)式切割練習(xí) * a: 案例代碼 public class RegexDemo1 { public static void main(String[] args) { split_1(); split_2(); split_3(); } /* * String類方法split對(duì)字符串進(jìn)行切割 * 192.168.105.27 按照 點(diǎn)切割字符串 */ public static void split_3(){ String ip = "192.168.105.27"; String[] strArr = ip.split("."); System.out.println("數(shù)組的長度"+strArr.length); for(int i = 0 ; i < strArr.length ; i++){ System.out.println(strArr[i]); } } /* * String類方法split對(duì)字符串進(jìn)行切割 * 18 22 40 65 按照空格切割字符串 */ public static void split_2(){ String str = "18 22 40 65"; String[] strArr = str.split(" +"); System.out.println("數(shù)組的長度"+strArr.length); for(int i = 0 ; i < strArr.length ; i++){ System.out.println(strArr[i]); } } /* * String類方法split對(duì)字符串進(jìn)行切割 * 12-25-36-98 按照-對(duì)字符串進(jìn)行切割 */ public static void split_1(){ String str = "12-25-36-98"; //按照-對(duì)字符串進(jìn)行切割,String類方法split String[] strArr = str.split("-"); System.out.println("數(shù)組的長度"+strArr.length); for(int i = 0 ; i < strArr.length ; i++){ System.out.println(strArr[i]); } } }06正則表達(dá)式替換練習(xí)
* A: 正則表達(dá)式替換練習(xí) * a: 案例代碼 public class RegexDemo1 { public static void main(String[] args) { replaceAll_1(); } /* * "Hello12345World6789012"將所有數(shù)字替換掉 * String類方法replaceAll(正則規(guī)則,替換后的新字符串) */ public static void replaceAll_1(){ String str = "Hello12345World6789012"; str = str.replaceAll("[d]+", "#"); System.out.println(str); } }07正則表達(dá)式郵箱地址驗(yàn)證
* A: 正則表達(dá)式郵箱地址驗(yàn)證 * a: 案例代碼 public class RegexDemo2 { public static void main(String[] args) { checkMail(); } /* * 檢查郵件地址是否合法 * 規(guī)則: * [email protected] * [email protected] * [email protected] * [email protected] * * @: 前 數(shù)字字母_ 個(gè)數(shù)不能少于1個(gè) * @: 后 數(shù)字字母 個(gè)數(shù)不能少于1個(gè) * .: 后面 字母 * */ public static void checkMail(){ String email ="[email protected]"; boolean b = email.matches("[a-zA-Z0-9_]+@[0-9a-z]+(.[a-z]+)+"); System.out.println(b); } }08毫秒值概念
* A: 毫秒值概念 * a: 時(shí)間和日期類 * java.util.Date * b: 毫秒概念 * 1000毫秒=1秒 * c: 毫秒的0點(diǎn) * System.currentTimeMillis() 返回值long類型參數(shù) * 獲取當(dāng)前日期的毫秒值 3742769374405 * 時(shí)間原點(diǎn); 公元1970年1月1日,午夜0:00:00 英國格林威治 毫秒值就是0 * 時(shí)間2088年8月8日 * 時(shí)間和日期的計(jì)算,必須依賴毫秒值09Date類的構(gòu)造方法
* A: Date類的構(gòu)造方法 * a: 空參構(gòu)造 * public Date() * b: 帶參構(gòu)造 * public Date(long times)
==============================第二階段====================================
10Date類的get和set方法* A:Date類的get和set方法 * public long getTime() * 將當(dāng)前的日期對(duì)象,轉(zhuǎn)為對(duì)應(yīng)的毫秒值 * public void setTime(long times); * 根據(jù)給定的毫秒值,生成對(duì)應(yīng)的日期對(duì)象11日期格式化SimpleDateFormat
* A: 日期格式化SimpleDateFormat * a: 對(duì)日期進(jìn)行格式化(自定義) * 對(duì)日期格式化的類 java.text.DateFormat 抽象類, 普通方法,也有抽象的方法 * 實(shí)際使用是子類 java.text.SimpleDateFormat 可以使用父類普通方法,重寫了抽象方法 * b: 對(duì)日期進(jìn)行格式化的步驟 * 1: 創(chuàng)建SimpleDateFormat對(duì)象 * 在類構(gòu)造方法中,寫入字符串的日期格式 (自己定義) * 2: SimpleDateFormat調(diào)用方法format對(duì)日期進(jìn)行格式化 * public String format(Date date) 傳遞日期對(duì)象,返回字符串 * 日期模式: * yyyy 年份 * MM 月份 * dd 月中的天數(shù) * HH 0-23小時(shí) * mm 小時(shí)中的分鐘 * ss 秒 * yyyy年MM月dd日 HH點(diǎn)mm分鐘ss秒 漢字修改,: - 字母表示的每個(gè)字段不可以隨便寫12字符串轉(zhuǎn)成日期對(duì)象
* A: 字符串轉(zhuǎn)成日期對(duì)象 * a: 使用步驟 * 1: 創(chuàng)建SimpleDateFormat的對(duì)象 * 構(gòu)造方法中,指定日期模式 * 2: 子類對(duì)象,調(diào)用方法 parse 傳遞String,返回Date * 注意: 時(shí)間和日期的模式y(tǒng)yyy-MM-dd, 必須和字符串中的時(shí)間日期匹配13Calendar類_1
* A: Calendar類_1 * a: 日歷類(抽象類) * java.util.Calendar * b: 創(chuàng)建對(duì)象 * Calendar類寫了靜態(tài)方法 getInstance() 直接返回了子類的對(duì)象 * 不需要直接new子類的對(duì)象,通過靜態(tài)方法直接獲取14Calendar類_2
* A: Calendar類_2 * a: 成員方法 * getTime() 把日歷對(duì)象,轉(zhuǎn)成Date日期對(duì)象 * get(日歷字段) 獲取指定日歷字段的值 * b: 代碼演示 Calendar c = Calendar.getInstance(); // 獲取年份 int year = c.get(Calendar.YEAR); // 獲取月份 int month = c.get(Calendar.MONTH) + 1; // 獲取天數(shù) int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + month + "月" + day + "日");15Calendar類_3
* A: Calendar類_3 * a: 成員方法 * set(int field,int value) 設(shè)置指定的時(shí)間 * b: 代碼演示 /* * Calendar類的set方法 設(shè)置日歷 set(int field,int value) field 設(shè)置的是哪個(gè)日歷字段 value * 設(shè)置后的具體數(shù)值 * * set(int year,int month,int day) 傳遞3個(gè)整數(shù)的年,月,日 */ public static void function_1() { Calendar c = Calendar.getInstance(); // 設(shè)置,月份,設(shè)置到10月分 // c.set(Calendar.MONTH, 9); // 設(shè)置年,月,日 c.set(2099, 4, 1); // 獲取年份 int year = c.get(Calendar.YEAR); // 獲取月份 int month = c.get(Calendar.MONTH) + 1; // 獲取天數(shù) int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + month + "月" + day + "日"); }16Calendar類_4
* A: Calendar類_4 * a: 成員方法 * add(int field, int value) 進(jìn)行整數(shù)的偏移 * int get(int field) 獲取指定字段的值 * b: 案例演示 /* * Calendar類方法add 日歷的偏移量, * 可以指定一個(gè)日歷中的字段, * 進(jìn)行整數(shù)的偏移 add(int field, int value) */ public static void function_2() { Calendar c = Calendar.getInstance(); // 讓日歷中的天數(shù),向后偏移280天 c.add(Calendar.DAY_OF_MONTH, -280); // 獲取年份 int year = c.get(Calendar.YEAR); // 獲取月份 int month = c.get(Calendar.MONTH) + 1; // 獲取天數(shù) int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + month + "月" + day + "日"); }17日期練習(xí)_活了多少天
* A: 日期練習(xí)_活了多少天 * a: 案例代碼 /* * 計(jì)算活了多少天 * 生日 今天的日期 * 兩個(gè)日期變成毫秒值,減法 */ public static void function() throws Exception { System.out.println("請(qǐng)輸入出生日期 格式 YYYY-MM-dd"); //獲取出生日期,鍵盤輸入 String birthdayString = new Scanner(System.in).next(); //將字符串日期,轉(zhuǎn)成Date對(duì)象 //創(chuàng)建SimpleDateFormat對(duì)象,寫日期模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //調(diào)用方法parse,字符串轉(zhuǎn)成日期對(duì)象 Date birthdayDate = sdf.parse(birthdayString); //獲取今天的日期對(duì)象 Date todayDate = new Date(); //將兩個(gè)日期轉(zhuǎn)成毫秒值,Date類的方法getTime long birthdaySecond = birthdayDate.getTime(); long todaySecond = todayDate.getTime(); long secone = todaySecond-birthdaySecond; if(secone < 0){ System.out.println("還沒出生呢"); } else{ System.out.println(secone/1000/60/60/24); } }18日期練習(xí)_閏年計(jì)算
* A: 日期練習(xí)_閏年計(jì)算 * a: 案例代碼 /* * 閏年計(jì)算 * 2000 3000 * 高級(jí)的算法: 日歷設(shè)置到指定年份的3月1日,add向前偏移1天,獲取天數(shù),29閏年 */ public static void function_1(){ Calendar c = Calendar.getInstance(); //將日歷,設(shè)置到指定年的3月1日 c.set(2088, 2, 1); //日歷add方法,向前偏移1天 c.add(Calendar.DAY_OF_MONTH, -1); //get方法獲取天數(shù) int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(day); }19總結(jié)
把今天的知識(shí)點(diǎn)總結(jié)一遍。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67168.html
摘要:正則表達(dá)式的概述和簡(jiǎn)單使用正則表達(dá)式是指一個(gè)用來描述或者匹配一系列符合某個(gè)語法規(guī)則的字符串的單個(gè)字符串。例如,在表達(dá)式中,存在四個(gè)這樣的組組零始終代表整個(gè)表達(dá)式。 1_正則表達(dá)式的概述和簡(jiǎn)單使用 A:正則表達(dá)式 是指一個(gè)用來描述或者匹配一系列符合某個(gè)語法規(guī)則的字符串的單個(gè)字符串。其實(shí)就是一種規(guī)則。有自己特殊的應(yīng)用。 作用:比如注冊(cè)郵箱,郵箱有用戶名和密碼,一般會(huì)對(duì)其限制長度,這個(gè)...
摘要:類提供方法和方法來通知系統(tǒng)進(jìn)行垃圾回收清理系統(tǒng)資源,并提供了和方法來加載文件和動(dòng)態(tài)鏈接庫。返回按照標(biāo)準(zhǔn)的規(guī)定,對(duì)兩個(gè)參數(shù)進(jìn)行余數(shù)運(yùn)算。 與用戶互動(dòng) 運(yùn)行Java程序的參數(shù) //Java程序入口:main()方法 public static void main(String[] args){...} public修飾符:Java類由JVM調(diào)用,為了讓JVM可以自由調(diào)用這個(gè)main()方...
時(shí)間:2017年05月24日星期三說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:無個(gè)人學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 什么是定時(shí)任務(wù)調(diào)度 基于給定的時(shí)間點(diǎn),給定的時(shí)間間隔或者給定的執(zhí)行次數(shù)自動(dòng)執(zhí)行的任務(wù) 在Java中的定時(shí)調(diào)度工具 Timer:小弟,能實(shí)現(xiàn)日常60%的定...
摘要:成員方法類概述用于產(chǎn)生隨機(jī)數(shù)成員方法正則表達(dá)式相關(guān)方法判斷功能分割功能替換功能獲取功能和類的使用類概述包含一些有用的類字段和方法。注意它不能被實(shí)例化,因?yàn)榇祟悩?gòu)造器是私有的成員方法類類概述表示特定的瞬間,精確到毫秒。 前言 我們都知道,JDK包含了JRE,而JRE中也提供了各種功能的java類,現(xiàn)在我們就對(duì)這些類有個(gè)簡(jiǎn)單了解,然后靈活運(yùn)用。 常用類:Object類/Scanner類,...
摘要:由于最近一個(gè)項(xiàng)目需要需要學(xué)習(xí)知識(shí)學(xué)習(xí)的過程中做了一些筆記主要以知識(shí)點(diǎn)記錄為主現(xiàn)在分享出來供參考大部分內(nèi)容是參考的自強(qiáng)學(xué)堂這里做了歸納接口在中接口可理解為對(duì)象間相互通信的協(xié)議接口在繼承中扮演著很重要的角色接口只定義派生要用到的方法但方法的具體 由于最近一個(gè)項(xiàng)目需要,需要學(xué)習(xí)JAVA知識(shí),學(xué)習(xí)的過程中做了一些筆記,主要以知識(shí)點(diǎn)記錄為主,現(xiàn)在分享出來供參考.大部分內(nèi)容是參考的自強(qiáng)學(xué)堂.這里做...
閱讀 2481·2021-09-29 09:34
閱讀 3320·2021-09-23 11:21
閱讀 2513·2021-09-06 15:00
閱讀 1138·2019-08-30 15:44
閱讀 2040·2019-08-29 17:23
閱讀 3011·2019-08-29 16:44
閱讀 3068·2019-08-29 13:13
閱讀 1948·2019-08-28 18:12