




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第6章字符串和正則表達(dá)式章字符串和正則表達(dá)式 本章導(dǎo)讀本章導(dǎo)讀1. String類2. StringBuffer類3. StringTokenizer類4. 正則表達(dá)式與模式匹配5正則表達(dá)式與字符串分解 本資料由-大學(xué)生創(chuàng)業(yè)|創(chuàng)業(yè)|創(chuàng)業(yè)網(wǎng)http:/ 減肥藥排行榜|淘寶最好的減肥藥|什么減肥藥效果最好|減肥瘦身藥|http:/6.1 String類類 Java使用java.lang包中的String類來(lái)創(chuàng)建一個(gè)字符串變量,因此字符串變量是類類型變量,是一個(gè)對(duì)象。 1字符串常量 如 :你好、1234.987、weqweo。 2創(chuàng)建字符串對(duì)象 使用String類的構(gòu)造方法創(chuàng)建字符串對(duì)象: 例如:
2、 String s; s=new String(we are students); 聲明和創(chuàng)建可用一步完成: String s=new String(we are students); 也可以用一個(gè)已創(chuàng)建的字符串創(chuàng)建另一個(gè)字符串,如: String tom=String(s); String類還有兩個(gè)較常用構(gòu)造方法: (1)String (char a):用一個(gè)字符數(shù)組a 創(chuàng)建一個(gè)字符串對(duì)象,如: char a=b,o,y; String s=new String(a); (2)String(char a,int startIndex,int count):提取字符數(shù)組a 中的一部分字符創(chuàng)建一
3、個(gè)字符串對(duì)象,參數(shù)startIndex和count分別指定在a中提取字符的起始位置和從該位置開(kāi)始截取的字符個(gè)數(shù),例如: char a=s,t,b,u,s,n; String s=new String(a,2,3); 3引用字符串常量對(duì)象 字符串常量是對(duì)象,因此可以把字符串常量的引用賦值給一個(gè)字符串變量 4String 類的常用方法 (1)public int length() 使用String 類中的length()方法可以獲取一個(gè)字符串的長(zhǎng)度 (2)public boolean equals(String s) 字符串對(duì)象調(diào)用String類中的equals方法,比較當(dāng)前字符串對(duì)象的實(shí)體是否與
4、參數(shù)指定的字符串s的實(shí)體相同 (3)public boolean startsWith(String s)、public boolean endsWith(String s)方法 字符串對(duì)象調(diào)用startsWith(String s)方法,判斷當(dāng)前字符串對(duì)象的前綴是否是參數(shù)指定的字符串s (4)public int compareTo(String s)方法 字符串對(duì)象可以使用String類中的compareTo(String s)方法,按字典序與參數(shù)s指定的字符串比較大小。如果當(dāng)前字符串與s相同,該方法返回值0;如果當(dāng)前字符串對(duì)象大于s,該方法返回正值;如果小于s,該方法返回負(fù)值。 例子 (
5、5)public int indexOf (String s) 字符串調(diào)用方法indexOf (String s)從當(dāng)前字符串的頭開(kāi)始檢索字符串s,并返回首次出現(xiàn)s的位置。如果沒(méi)有檢索到字符串s,該方法返回的值是-1。字符串調(diào)用indexOf(String s ,int startpoint)方法從當(dāng)前字符串的startpoint位置處開(kāi)始檢索字符串s,并返回首次出現(xiàn)s的位置。如果沒(méi)有檢索到字符串s,該方法返回的值是-1。字符串調(diào)用lastIndexOf (String s)方法從當(dāng)前字符串的頭開(kāi)始檢索字符串s,并返回最后出現(xiàn)s的位置。如果沒(méi)有檢索到字符串s,該方法返回的值是-1。 (6)pu
6、blic String substring(int startpoint) 字符串對(duì)象調(diào)用該方法獲得一個(gè)當(dāng)前字符串的子串,該子串是從當(dāng)前字符串的startpoint處截取到最后所得到的字符串。字符串對(duì)象調(diào)用substring(int start ,int end)方法獲得一個(gè)當(dāng)前字符串的子串,該子串是從當(dāng)前字符串的start處截取到end處所得到的字符串,但不包括end處所對(duì)應(yīng)的字符。 (7)public String replaceAll(String old ,String new) 字符串對(duì)象s調(diào)用該方法可以獲得一個(gè)串對(duì)象,這個(gè)串對(duì)象是通過(guò)用參數(shù)new指定的字符串替換s中由old指定的所
7、有字符串而得到的字符串。 (8)public String trim() 一個(gè)字符串s通過(guò)調(diào)用方法trim()得到一個(gè)字符串對(duì)象,該字符串對(duì)象是s去掉前后空格后的字符串。 5字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化 java.lang包中的Integer類調(diào)用其類方法: public static int parseInt(String s) 可以將“數(shù)字”格式的字符串,如“12387”,轉(zhuǎn)化為int型數(shù)據(jù)。 類似地,使用java.lang包中的Byte、Short、Long、Float、Double類調(diào)相應(yīng)的類方法: public static byte parseByte(String s) publi
8、c static short parseShort(String s) public static long parseLong(String s) public static double parseDouble(String s) public static double parseDouble(String s) 可以將“數(shù)字”格式的字符串,轉(zhuǎn)化為相應(yīng)的基本數(shù)據(jù)類型。 有時(shí),我們需要將數(shù)字轉(zhuǎn)化為字符串,可以使用String 類的下列類方法: public String valueOf(byte n) public String valueOf(int n) public String v
9、alueOf(long n) public String valueOf(float n) public String valueOf(double n)例子2 6對(duì)象的字符串表示 在子類中我們講過(guò),所有的類都默認(rèn)是java.lang包中Object類的子類或間接子類。Object類有一個(gè)public 方法toString(),一個(gè)對(duì)象通過(guò)調(diào)用該方法可以獲得該對(duì)象的字符串表示。例子3 7字符串與字符、字節(jié)數(shù)組 (1)字符串與字符數(shù)組 我們已經(jīng)知道String 類的構(gòu)造方法:String(char)和String(char,int offset,int length)分別用數(shù)組a中的全部字符和部
10、分字符創(chuàng)建字符串對(duì)象。String類也提供了將字符串存放到數(shù)組中的方法: public void getChars(int start,int end,char c,int offset ) 字符串調(diào)用getChars方法將當(dāng)前字符串中的一部分字符復(fù)制到參數(shù)c指定的數(shù)組中,將字符串中從位置start到end-1位置上的字符復(fù)制的數(shù)組c中,并從數(shù)組c的offset處開(kāi)始存放這些字符。需要注意的是,必須保證數(shù)組c能容納下要被復(fù)制的字符。 String 類還提供了一個(gè)方法: public char toCharArray() 字符串對(duì)象調(diào)用該方法可以初始化一個(gè)字符數(shù)組,該數(shù)組的長(zhǎng)度與字符串的長(zhǎng)度相等
11、,并將字符串對(duì)象的全部字符復(fù)制到該數(shù)組中。例子4 (2)字符串與字節(jié)數(shù)組 String類的構(gòu)造方法String(byte)用指定的字節(jié)數(shù)組構(gòu)造一個(gè)字符串對(duì)象。String(byte,int offset,int length) 構(gòu)造方法用指定的字節(jié)數(shù)組的一部分,即從數(shù)組起始位置offset開(kāi)始取length個(gè)字節(jié)構(gòu)造一個(gè)字符串對(duì)象。public byte getBytes() 方法使用平臺(tái)默認(rèn)的字符編碼,將當(dāng)前字符串轉(zhuǎn)化為一個(gè)字節(jié)數(shù)組。例子5返回6.2 StringBuffer 類類 前面我們學(xué)習(xí)了String字符串對(duì)象,String類創(chuàng)建的字符串對(duì)象是不可修改的,也就是說(shuō),String字符串
12、不能修改、刪除或替換字符串中的某個(gè)字符,即String對(duì)象一旦創(chuàng)建,那么實(shí)體是不可以再發(fā)生變化的 在這一節(jié),我們介紹StringBuffer類,該類能創(chuàng)建可修改的字符串序列,也就是說(shuō),該類的對(duì)象的實(shí)體的內(nèi)存空間可以自動(dòng)的改變大小,便于存放一個(gè)可變的字符串。 1StringBuffer類的構(gòu)造方法 StringBuffer類有三個(gè)構(gòu)造方法: (1)StringBuffer() (2)StringBuffer(int size) (3)StringBuffer(String s) 使用第1個(gè)無(wú)參數(shù)的構(gòu)造方法創(chuàng)建一個(gè)StringBuffer對(duì)象,那么分配給該對(duì)象的實(shí)體的初始容量可以容納16個(gè)字符,當(dāng)
13、該對(duì)象的實(shí)體存放的字符序列的長(zhǎng)度大于16時(shí),實(shí)體的容量自動(dòng)地增加,以便存放所增加的字符。StringBuffer對(duì)象可以通過(guò)length()方法獲取實(shí)體中存放的字符序列的長(zhǎng)度,通過(guò)capacity()方法獲取當(dāng)前實(shí)體的實(shí)際容量。 使用第2個(gè)構(gòu)造方法創(chuàng)建一個(gè)StringBuffer對(duì)象,那么可以指定分配給該對(duì)象的實(shí)體的初始容量為參數(shù)size 指定的字符個(gè)數(shù),當(dāng)該對(duì)象的實(shí)體存放的字符序列的長(zhǎng)度大于size 個(gè)字符時(shí),實(shí)體的容量自動(dòng)地增加,以便存放所增加的字符。 使用第3個(gè)構(gòu)造方法創(chuàng)建一個(gè)StringBuffer對(duì)象,那么可以指定分配給該對(duì)象的實(shí)體的初始容量為參數(shù)字符串s的長(zhǎng)度額外再加16個(gè)字符。當(dāng)
14、該對(duì)象的實(shí)體存放的字符序列的長(zhǎng)度大于size 個(gè)字符時(shí),實(shí)體的容量自動(dòng)地增加,以便存放所增加的字符。 2StringBuffer類的常用方法 (1)append方法 使用StringBuffer類的append方法可以將其它Java類型數(shù)據(jù)轉(zhuǎn)化為字符串后,再追加到StringBuffer對(duì)象中。 (2)char charAt(int n) 得到參數(shù)n指定的置上的單個(gè)字符。當(dāng)前對(duì)象實(shí)體中的字符串序列的第一個(gè)位置為0,第二個(gè)位置為1,依次類推。n的值必須是非負(fù)的,并且小于當(dāng)前對(duì)象實(shí)體中字符串序列的長(zhǎng)度。 (3)void setCharAt (int n , char ch) 將當(dāng)前StringBu
15、ffer對(duì)象實(shí)體中的字符串位置n處的字符用參數(shù)ch指定的字符替換。n的值必須是非負(fù)的,并且小于當(dāng)前對(duì)象實(shí)體中字符串序列的長(zhǎng)度。 (4)StringBuffer insert(int index, String str) insert方法將一個(gè)字符串插入另一個(gè)字符串中,并返回當(dāng)前對(duì)象的引用。 (5)public StringBuffer reverse() StringBuffer對(duì)象使用reverse()方法將該對(duì)象實(shí)體中的字符翻轉(zhuǎn),并返回當(dāng)前對(duì)象的引用。 (6)StringBuffer delete(int startIndex, int endIndex) 從當(dāng)前StringBuffer對(duì)
16、象實(shí)體中的字符串中刪除一個(gè)子字符串,并返回當(dāng)前對(duì)象的引用。這里startIndex指定了需刪除的第一個(gè)字符的下標(biāo),而endIndex指定了需刪除的最后一個(gè)字符的下一個(gè)字符的下標(biāo)。因此要?jiǎng)h除的子字符串從startIndex到endIndex-1。 (7)StringBuffer replace( int startIndex ,int endIndex, String str) 將當(dāng)前StringBuffer對(duì)象實(shí)體中的字符串的一個(gè)子字符串用參數(shù)str指定的字符串替換。被替換的子字符串由下標(biāo)startIndex 和endIndex,指定,即從startIndex到endIndex-1的字符串被替
17、換。該方法返回當(dāng)前StringBuffer對(duì)象的應(yīng)用。例子6返回6.3 StringTokenizer 類類 當(dāng)我們分析一個(gè)字符串并將字符串分解成可被獨(dú)立使用的單詞時(shí),可以使用java.util包中的StringTokenizer類,該類有兩個(gè)常用的構(gòu)造方法: 1StringTokenizer(String s) 為字符串s構(gòu)造一個(gè)分析器。使用默認(rèn)的分隔符集合,即空格符(若干個(gè)空格被看做一個(gè)空格)、換行符、回車符、Tab符、進(jìn)紙符。 2StringTokenizer(String s, String delim) 為字符串s構(gòu)造一個(gè)分析器,參數(shù)dilim中的字符被作為分隔符。 我們把一個(gè)Str
18、ingTokenizer對(duì)象稱作一個(gè)字符串分析器,字符串分析器封裝著語(yǔ)言符號(hào)和對(duì)其進(jìn)行操作的方法。一個(gè)分析器可以使用nextToken()方法逐個(gè)獲取字符串分析器中的語(yǔ)言符號(hào)(單詞),每當(dāng)獲取到一個(gè)語(yǔ)言符號(hào),字符串分析器中的負(fù)責(zé)計(jì)數(shù)的變量的值就自動(dòng)減一,該計(jì)數(shù)變量的初始值等于字符串中的單詞數(shù)目,字符串分析器調(diào)用countTokens()方法可以得到計(jì)數(shù)變量的值。字符串分析器通常用while循環(huán)來(lái)逐個(gè)獲取語(yǔ)言符號(hào),為了控制循環(huán),我們可以使用StringTokenizer類中的hasMoreTokens()方法,只要計(jì)數(shù)的變量的值大于0,該方法就返回true,否則返回false。 下面是一個(gè)應(yīng)用程
19、序(例子7),用戶從鍵盤輸入一個(gè)浮點(diǎn)數(shù),程序輸出分別輸出該數(shù)的整數(shù)部分和小數(shù)部分 返回6.4 正則表達(dá)式與模式匹配正則表達(dá)式與模式匹配 1正則表達(dá)式 一個(gè)正則表達(dá)式是含有一些具有特殊意義字符的字符串,這些特殊字符稱作正則表達(dá)式中的元字符。比如,“dok”中的d就是有特殊意義的元字符,代表0到9中的任何一個(gè)。一個(gè)正則表達(dá)式也稱作一個(gè)模式,字符串“9ok”和“1ok”都是和模式:“dok”匹配的字符串之一。和一個(gè)模式匹配的字符串稱作匹配模式字符串,也稱作模式匹配字符串。 2模式匹配 模式匹配就是檢索和指定模式匹配的字符串。Java提供了專門用來(lái)進(jìn)行模式匹配的類,這些類在java.util.rege
20、x包中。 (1)建立模式對(duì)象 進(jìn)行模式匹配的第一步就是使用Pattern類創(chuàng)建一個(gè)對(duì)象,稱作模式對(duì)象。Pattern類調(diào)用類方法compile(String patter)來(lái)完成這一任務(wù),其中的參數(shù)patter是一個(gè)正則表達(dá)式,稱作模式對(duì)象使用的模式 例如,我們使用正則表達(dá)式“Ad”建立一個(gè)模式對(duì)象p: Pattern p= Ppile(Ad); 如果參數(shù)patter指定的正則表達(dá)式有錯(cuò),complie方法將拋出異常:PatternSyntaxException。 Pattern類也可以調(diào)用類方法compile(String regex, int flags)返回一個(gè)Pattern對(duì)象,參數(shù)f
21、lags可以取下列有效值: Pattern .CASE_INSENSITIVE Pattern.MULTILINE Pattern.DOTALL Pattern.UNICODE_CASE Pattern.CANON_EQ 例如,flags取值Pattern .CASE_INSENSITIVE,模式匹配時(shí)將忽略大小寫。 (2)建立匹配對(duì)象 模式對(duì)象p調(diào)用matcher(CharSequence input)方法返回一個(gè)Matcher對(duì)象m,稱作匹配對(duì)象,參數(shù)input可以是任何一個(gè)實(shí)現(xiàn)了CharSequence接口的類創(chuàng)建的對(duì)象,我們前面學(xué)習(xí)的String類和StringBuffer類都使用了C
22、harSequence接口。 一個(gè)Matcher對(duì)象m可以使用下列3個(gè)方法尋找參數(shù)input指定的字符序列中是否有和模式patter匹配的子序列(patter是創(chuàng)建模式對(duì)象p時(shí)使用的正則表達(dá)式)。npublic boolean find() :尋找input和patter匹配的下一子序列npublic boolean matches():判斷input是否完全和patter匹配。npublic boolean matches():判斷input是否完全和patter匹配。npublic boolean lookingAt():判斷從input的開(kāi)始位置是否有和patter匹配的子序列。 下列幾
23、個(gè)方法也是Matcher對(duì)象m常用的方法npublic boolean find(int start) 判斷input從參數(shù)start指定位置開(kāi)始是否有和patter匹配的子序列,參數(shù)start取值0時(shí),該方法和lookingAt()的功能相同。npublic String replaceAll(String replacement) Matcher對(duì)象m調(diào)用該方法可以返回一個(gè)字符串對(duì)象,該字符串是通過(guò)把input中與模式patter匹配的子字符串全部替換為參數(shù)replacement指定的字符串得到的(注意,input本身沒(méi)有發(fā)生變化)。npublic String replaceFirst(
24、String replacement) Matcher對(duì)象m調(diào)用該方法可以返回一個(gè)字符串對(duì)象,該字符串是通過(guò)把input中第1個(gè)與模式patter匹配的子字符串替換為參數(shù)replacement指定的字符串得到的(注意,input本身沒(méi)有發(fā)生變化)。n例子8返回元字符模式元字符模式 在正則表達(dá)式(模式)中可以使用一對(duì)方括號(hào)括起若干個(gè)字符,代 表方括號(hào)中的任何一個(gè)字符。例如pattern=“159ABC”,那么“1ABC” 、“5ABC”和“9ABC”都是和模式pattern匹配的字符序列。 方括號(hào)模式的一些意義如下: abc:代表a、b、c中的任何一個(gè)。 abc:代表除了a、b、c以外的任何字符 a-d:代表 a至d中的任何一個(gè)。 另外,中括號(hào)里允許嵌套中括號(hào),可以進(jìn)行并、交、差運(yùn)算,例如: a-dm-p:代表 a至d, 或 m 至 p中的任何字符(并)。 a-z&def :代表d、 e、或 f中的任何一個(gè)(交)。 a-f&bc: :代表a、d、e、f (差)表6.1代表單個(gè)字符的元字符 元字符元字符 在正則表達(dá)式中的寫法在正則表達(dá)式中的寫法 意義意義 . “.” 代表任何一個(gè)字符 d “d” 代表0至9的任何一個(gè)數(shù)字 D “D” 代
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 時(shí)尚創(chuàng)意披薩店加盟體系與特色食材配送保障協(xié)議
- 網(wǎng)絡(luò)游戲技術(shù)入股分紅及產(chǎn)品運(yùn)營(yíng)合作協(xié)議
- 高新技術(shù)產(chǎn)業(yè)園區(qū)入駐企業(yè)共享技術(shù)合作補(bǔ)充協(xié)議
- 高新技術(shù)企業(yè)股權(quán)證書(shū)及技術(shù)研發(fā)合作交接協(xié)議
- 氫能加氣站建設(shè)與安全運(yùn)營(yíng)管理合同
- 智能零售商品識(shí)別攝像頭租賃與智能門店管理系統(tǒng)合同
- 文化產(chǎn)業(yè)審核標(biāo)準(zhǔn)補(bǔ)充協(xié)議
- 虛擬偶像IP與網(wǎng)絡(luò)文學(xué)創(chuàng)作合作合同
- 新能源微電網(wǎng)項(xiàng)目電力交易與市場(chǎng)接入?yún)f(xié)議
- 活動(dòng)策劃廣告物料設(shè)計(jì)與執(zhí)行協(xié)議
- 2016年廣東高考物理(原卷版)
- 衛(wèi)星遙感企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- DB54/T 0118-2017 地理標(biāo)志產(chǎn)品鹽井葡萄酒(干型)
- 2025建筑工程施工監(jiān)理合同條件標(biāo)準(zhǔn)版樣書(shū)
- Unit11Grammarinuse課件仁愛(ài)科普版(2024)七年級(jí)英語(yǔ)下冊(cè)
- 規(guī)范夜市攤位管理制度
- 公路水運(yùn)檢測(cè)師《水運(yùn)材料》考前沖刺必會(huì)題(附答案)
- 2024年學(xué)校安全生產(chǎn)月活動(dòng)實(shí)施方案
- 羊初乳知識(shí)培訓(xùn)課件
- 牛肉面行業(yè)標(biāo)準(zhǔn)
- 2025屆內(nèi)蒙古自治區(qū)高考化學(xué)三模試卷含解析
評(píng)論
0/150
提交評(píng)論