字符串與正則表達式_第1頁
字符串與正則表達式_第2頁
字符串與正則表達式_第3頁
字符串與正則表達式_第4頁
字符串與正則表達式_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第第6章字符串和正則表達式章字符串和正則表達式 本章導(dǎo)讀本章導(dǎo)讀1. String類2. StringBuffer類3. StringTokenizer類4. 正則表達式與模式匹配5正則表達式與字符串分解 本資料由-大學(xué)生創(chuàng)業(yè)|創(chuàng)業(yè)|創(chuàng)業(yè)網(wǎng)http:/ 減肥藥排行榜|淘寶最好的減肥藥|什么減肥藥效果最好|減肥瘦身藥|http:/6.1 String類類 Java使用java.lang包中的String類來創(chuàng)建一個字符串變量,因此字符串變量是類類型變量,是一個對象。 1字符串常量 如 :你好、1234.987、weqweo。 2創(chuàng)建字符串對象 使用String類的構(gòu)造方法創(chuàng)建字符串對象: 例如:

2、 String s; s=new String(we are students); 聲明和創(chuàng)建可用一步完成: String s=new String(we are students); 也可以用一個已創(chuàng)建的字符串創(chuàng)建另一個字符串,如: String tom=String(s); String類還有兩個較常用構(gòu)造方法: (1)String (char a):用一個字符數(shù)組a 創(chuàng)建一個字符串對象,如: char a=b,o,y; String s=new String(a); (2)String(char a,int startIndex,int count):提取字符數(shù)組a 中的一部分字符創(chuàng)建一

3、個字符串對象,參數(shù)startIndex和count分別指定在a中提取字符的起始位置和從該位置開始截取的字符個數(shù),例如: char a=s,t,b,u,s,n; String s=new String(a,2,3); 3引用字符串常量對象 字符串常量是對象,因此可以把字符串常量的引用賦值給一個字符串變量 4String 類的常用方法 (1)public int length() 使用String 類中的length()方法可以獲取一個字符串的長度 (2)public boolean equals(String s) 字符串對象調(diào)用String類中的equals方法,比較當前字符串對象的實體是否與

4、參數(shù)指定的字符串s的實體相同 (3)public boolean startsWith(String s)、public boolean endsWith(String s)方法 字符串對象調(diào)用startsWith(String s)方法,判斷當前字符串對象的前綴是否是參數(shù)指定的字符串s (4)public int compareTo(String s)方法 字符串對象可以使用String類中的compareTo(String s)方法,按字典序與參數(shù)s指定的字符串比較大小。如果當前字符串與s相同,該方法返回值0;如果當前字符串對象大于s,該方法返回正值;如果小于s,該方法返回負值。 例子 (

5、5)public int indexOf (String s) 字符串調(diào)用方法indexOf (String s)從當前字符串的頭開始檢索字符串s,并返回首次出現(xiàn)s的位置。如果沒有檢索到字符串s,該方法返回的值是-1。字符串調(diào)用indexOf(String s ,int startpoint)方法從當前字符串的startpoint位置處開始檢索字符串s,并返回首次出現(xiàn)s的位置。如果沒有檢索到字符串s,該方法返回的值是-1。字符串調(diào)用lastIndexOf (String s)方法從當前字符串的頭開始檢索字符串s,并返回最后出現(xiàn)s的位置。如果沒有檢索到字符串s,該方法返回的值是-1。 (6)pu

6、blic String substring(int startpoint) 字符串對象調(diào)用該方法獲得一個當前字符串的子串,該子串是從當前字符串的startpoint處截取到最后所得到的字符串。字符串對象調(diào)用substring(int start ,int end)方法獲得一個當前字符串的子串,該子串是從當前字符串的start處截取到end處所得到的字符串,但不包括end處所對應(yīng)的字符。 (7)public String replaceAll(String old ,String new) 字符串對象s調(diào)用該方法可以獲得一個串對象,這個串對象是通過用參數(shù)new指定的字符串替換s中由old指定的所

7、有字符串而得到的字符串。 (8)public String trim() 一個字符串s通過調(diào)用方法trim()得到一個字符串對象,該字符串對象是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ù)字轉(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對象的字符串表示 在子類中我們講過,所有的類都默認是java.lang包中Object類的子類或間接子類。Object類有一個public 方法toString(),一個對象通過調(diào)用該方法可以獲得該對象的字符串表示。例子3 7字符串與字符、字節(jié)數(shù)組 (1)字符串與字符數(shù)組 我們已經(jīng)知道String 類的構(gòu)造方法:String(char)和String(char,int offset,int length)分別用數(shù)組a中的全部字符和部

10、分字符創(chuàng)建字符串對象。String類也提供了將字符串存放到數(shù)組中的方法: public void getChars(int start,int end,char c,int offset ) 字符串調(diào)用getChars方法將當前字符串中的一部分字符復(fù)制到參數(shù)c指定的數(shù)組中,將字符串中從位置start到end-1位置上的字符復(fù)制的數(shù)組c中,并從數(shù)組c的offset處開始存放這些字符。需要注意的是,必須保證數(shù)組c能容納下要被復(fù)制的字符。 String 類還提供了一個方法: public char toCharArray() 字符串對象調(diào)用該方法可以初始化一個字符數(shù)組,該數(shù)組的長度與字符串的長度相等

11、,并將字符串對象的全部字符復(fù)制到該數(shù)組中。例子4 (2)字符串與字節(jié)數(shù)組 String類的構(gòu)造方法String(byte)用指定的字節(jié)數(shù)組構(gòu)造一個字符串對象。String(byte,int offset,int length) 構(gòu)造方法用指定的字節(jié)數(shù)組的一部分,即從數(shù)組起始位置offset開始取length個字節(jié)構(gòu)造一個字符串對象。public byte getBytes() 方法使用平臺默認的字符編碼,將當前字符串轉(zhuǎn)化為一個字節(jié)數(shù)組。例子5返回6.2 StringBuffer 類類 前面我們學(xué)習(xí)了String字符串對象,String類創(chuàng)建的字符串對象是不可修改的,也就是說,String字符串

12、不能修改、刪除或替換字符串中的某個字符,即String對象一旦創(chuàng)建,那么實體是不可以再發(fā)生變化的 在這一節(jié),我們介紹StringBuffer類,該類能創(chuàng)建可修改的字符串序列,也就是說,該類的對象的實體的內(nèi)存空間可以自動的改變大小,便于存放一個可變的字符串。 1StringBuffer類的構(gòu)造方法 StringBuffer類有三個構(gòu)造方法: (1)StringBuffer() (2)StringBuffer(int size) (3)StringBuffer(String s) 使用第1個無參數(shù)的構(gòu)造方法創(chuàng)建一個StringBuffer對象,那么分配給該對象的實體的初始容量可以容納16個字符,當

13、該對象的實體存放的字符序列的長度大于16時,實體的容量自動地增加,以便存放所增加的字符。StringBuffer對象可以通過length()方法獲取實體中存放的字符序列的長度,通過capacity()方法獲取當前實體的實際容量。 使用第2個構(gòu)造方法創(chuàng)建一個StringBuffer對象,那么可以指定分配給該對象的實體的初始容量為參數(shù)size 指定的字符個數(shù),當該對象的實體存放的字符序列的長度大于size 個字符時,實體的容量自動地增加,以便存放所增加的字符。 使用第3個構(gòu)造方法創(chuàng)建一個StringBuffer對象,那么可以指定分配給該對象的實體的初始容量為參數(shù)字符串s的長度額外再加16個字符。當

14、該對象的實體存放的字符序列的長度大于size 個字符時,實體的容量自動地增加,以便存放所增加的字符。 2StringBuffer類的常用方法 (1)append方法 使用StringBuffer類的append方法可以將其它Java類型數(shù)據(jù)轉(zhuǎn)化為字符串后,再追加到StringBuffer對象中。 (2)char charAt(int n) 得到參數(shù)n指定的置上的單個字符。當前對象實體中的字符串序列的第一個位置為0,第二個位置為1,依次類推。n的值必須是非負的,并且小于當前對象實體中字符串序列的長度。 (3)void setCharAt (int n , char ch) 將當前StringBu

15、ffer對象實體中的字符串位置n處的字符用參數(shù)ch指定的字符替換。n的值必須是非負的,并且小于當前對象實體中字符串序列的長度。 (4)StringBuffer insert(int index, String str) insert方法將一個字符串插入另一個字符串中,并返回當前對象的引用。 (5)public StringBuffer reverse() StringBuffer對象使用reverse()方法將該對象實體中的字符翻轉(zhuǎn),并返回當前對象的引用。 (6)StringBuffer delete(int startIndex, int endIndex) 從當前StringBuffer對

16、象實體中的字符串中刪除一個子字符串,并返回當前對象的引用。這里startIndex指定了需刪除的第一個字符的下標,而endIndex指定了需刪除的最后一個字符的下一個字符的下標。因此要刪除的子字符串從startIndex到endIndex-1。 (7)StringBuffer replace( int startIndex ,int endIndex, String str) 將當前StringBuffer對象實體中的字符串的一個子字符串用參數(shù)str指定的字符串替換。被替換的子字符串由下標startIndex 和endIndex,指定,即從startIndex到endIndex-1的字符串被替

17、換。該方法返回當前StringBuffer對象的應(yīng)用。例子6返回6.3 StringTokenizer 類類 當我們分析一個字符串并將字符串分解成可被獨立使用的單詞時,可以使用java.util包中的StringTokenizer類,該類有兩個常用的構(gòu)造方法: 1StringTokenizer(String s) 為字符串s構(gòu)造一個分析器。使用默認的分隔符集合,即空格符(若干個空格被看做一個空格)、換行符、回車符、Tab符、進紙符。 2StringTokenizer(String s, String delim) 為字符串s構(gòu)造一個分析器,參數(shù)dilim中的字符被作為分隔符。 我們把一個Str

18、ingTokenizer對象稱作一個字符串分析器,字符串分析器封裝著語言符號和對其進行操作的方法。一個分析器可以使用nextToken()方法逐個獲取字符串分析器中的語言符號(單詞),每當獲取到一個語言符號,字符串分析器中的負責(zé)計數(shù)的變量的值就自動減一,該計數(shù)變量的初始值等于字符串中的單詞數(shù)目,字符串分析器調(diào)用countTokens()方法可以得到計數(shù)變量的值。字符串分析器通常用while循環(huán)來逐個獲取語言符號,為了控制循環(huán),我們可以使用StringTokenizer類中的hasMoreTokens()方法,只要計數(shù)的變量的值大于0,該方法就返回true,否則返回false。 下面是一個應(yīng)用程

19、序(例子7),用戶從鍵盤輸入一個浮點數(shù),程序輸出分別輸出該數(shù)的整數(shù)部分和小數(shù)部分 返回6.4 正則表達式與模式匹配正則表達式與模式匹配 1正則表達式 一個正則表達式是含有一些具有特殊意義字符的字符串,這些特殊字符稱作正則表達式中的元字符。比如,“dok”中的d就是有特殊意義的元字符,代表0到9中的任何一個。一個正則表達式也稱作一個模式,字符串“9ok”和“1ok”都是和模式:“dok”匹配的字符串之一。和一個模式匹配的字符串稱作匹配模式字符串,也稱作模式匹配字符串。 2模式匹配 模式匹配就是檢索和指定模式匹配的字符串。Java提供了專門用來進行模式匹配的類,這些類在java.util.rege

20、x包中。 (1)建立模式對象 進行模式匹配的第一步就是使用Pattern類創(chuàng)建一個對象,稱作模式對象。Pattern類調(diào)用類方法compile(String patter)來完成這一任務(wù),其中的參數(shù)patter是一個正則表達式,稱作模式對象使用的模式 例如,我們使用正則表達式“Ad”建立一個模式對象p: Pattern p= Ppile(Ad); 如果參數(shù)patter指定的正則表達式有錯,complie方法將拋出異常:PatternSyntaxException。 Pattern類也可以調(diào)用類方法compile(String regex, int flags)返回一個Pattern對象,參數(shù)f

21、lags可以取下列有效值: Pattern .CASE_INSENSITIVE Pattern.MULTILINE Pattern.DOTALL Pattern.UNICODE_CASE Pattern.CANON_EQ 例如,flags取值Pattern .CASE_INSENSITIVE,模式匹配時將忽略大小寫。 (2)建立匹配對象 模式對象p調(diào)用matcher(CharSequence input)方法返回一個Matcher對象m,稱作匹配對象,參數(shù)input可以是任何一個實現(xiàn)了CharSequence接口的類創(chuàng)建的對象,我們前面學(xué)習(xí)的String類和StringBuffer類都使用了C

22、harSequence接口。 一個Matcher對象m可以使用下列3個方法尋找參數(shù)input指定的字符序列中是否有和模式patter匹配的子序列(patter是創(chuàng)建模式對象p時使用的正則表達式)。npublic boolean find() :尋找input和patter匹配的下一子序列npublic boolean matches():判斷input是否完全和patter匹配。npublic boolean matches():判斷input是否完全和patter匹配。npublic boolean lookingAt():判斷從input的開始位置是否有和patter匹配的子序列。 下列幾

23、個方法也是Matcher對象m常用的方法npublic boolean find(int start) 判斷input從參數(shù)start指定位置開始是否有和patter匹配的子序列,參數(shù)start取值0時,該方法和lookingAt()的功能相同。npublic String replaceAll(String replacement) Matcher對象m調(diào)用該方法可以返回一個字符串對象,該字符串是通過把input中與模式patter匹配的子字符串全部替換為參數(shù)replacement指定的字符串得到的(注意,input本身沒有發(fā)生變化)。npublic String replaceFirst(

24、String replacement) Matcher對象m調(diào)用該方法可以返回一個字符串對象,該字符串是通過把input中第1個與模式patter匹配的子字符串替換為參數(shù)replacement指定的字符串得到的(注意,input本身沒有發(fā)生變化)。n例子8返回元字符模式元字符模式 在正則表達式(模式)中可以使用一對方括號括起若干個字符,代 表方括號中的任何一個字符。例如pattern=“159ABC”,那么“1ABC” 、“5ABC”和“9ABC”都是和模式pattern匹配的字符序列。 方括號模式的一些意義如下: abc:代表a、b、c中的任何一個。 abc:代表除了a、b、c以外的任何字符 a-d:代表 a至d中的任何一個。 另外,中括號里允許嵌套中括號,可以進行并、交、差運算,例如: a-dm-p:代表 a至d, 或 m 至 p中的任何字符(并)。 a-z&def :代表d、 e、或 f中的任何一個(交)。 a-f&bc: :代表a、d、e、f (差)表6.1代表單個字符的元字符 元字符元字符 在正則表達式中的寫法在正則表達式中的寫法 意義意義 . “.” 代表任何一個字符 d “d” 代表0至9的任何一個數(shù)字 D “D” 代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論