




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 字符串和正則表達(dá)式 字符串是應(yīng)用程序和用戶(hù)交互的主要方式,是評(píng)價(jià)一個(gè)編程語(yǔ)言非常重要的內(nèi)容。.NET提供了幾個(gè)類(lèi)來(lái)快速實(shí)現(xiàn)字符串操作,包括String,System.Text命名空間等。本章將對(duì)這一部分內(nèi)容進(jìn)行介紹。5.1 字 符 串 字符串(String)是最常用的字符串操作類(lèi),可以幫助程序設(shè)計(jì)人員完成絕大部分的字符串操作功能,使用方便。如圖所示為String類(lèi)的屬性和常用方法。5.1.1 比較字符串 比較字符串是指按照字典排序規(guī)則,判定兩個(gè)字符串的相對(duì)大小。按照字典規(guī)則,在一本英文字典中,出現(xiàn)在前面的單詞小于出現(xiàn)在后面的單詞。在String類(lèi)中,常用的比較字符串的方法包括Compa
2、re,CompareTo,CompareOrdinal以及Equals。 1Compare方法Compare方法是String類(lèi)的靜態(tài)方法,用于全面比較兩個(gè)字符串對(duì)象,包括6種重載方式。 2CompareTo方法 3Equals方法 4比較運(yùn)算符5.1.2 格式化字符串Format方法用于創(chuàng)建格式化的字符串以及連接多個(gè)字符串對(duì)象。Format與C語(yǔ)言中的sprintf()方法有類(lèi)似之處。Format方法也有多個(gè)重載形式,最常用的為:public static string FormatFormat(string format, params object args);其中,參數(shù)format用于
3、指定返回字符串的格式,而args為一系列變量參數(shù)??梢酝ㄟ^(guò)下面的實(shí)例來(lái)掌握其使用方法。String newStr=String.Format(0,1!,strA,strB);Console.WriteLine(newStr); 5.1.3 連接字符串String類(lèi)包含了兩個(gè)連接字符串的靜態(tài)方法Concat和Join。1Concat方法Concat方法用于連接兩個(gè)或多個(gè)字符串。Concat方法與C語(yǔ)言中的strcat()方法有類(lèi)似之處。Concat方法也有多個(gè)重載形式,最常用的為:public static string Concat(params stringvalues);2Join方法Jo
4、in方法利用一個(gè)字符數(shù)組和一個(gè)分隔符構(gòu)造新的字符串。常用于把多個(gè)字符串連接在一起,并用一個(gè)特殊的符號(hào)來(lái)分隔開(kāi)。Join的常用形式為:public static string Join(string separator, stringvalue);3連接運(yùn)算符+String支持連接運(yùn)算符“+”,可以方便地連接多個(gè)字符串。例如,用“+”把“Hello”和“World”連接起來(lái)。5.1.4 分割字符串 使用前面介紹的Join方法,可以利用一個(gè)分隔符把多個(gè)字符串連接起來(lái)。反過(guò)來(lái),使用Split方法可以把一個(gè)整串,按照某個(gè)分隔符分裂成一系列小的字符串。例如,把整串“HelloWorld”按照字符進(jìn)行分裂
5、,可以得到3個(gè)小的字符串,即“Hello”、“”(空串)和“World”。Split有多個(gè)重載形式,最常用的為: public string Split( params char separator);5.1.5 插入字符串 String類(lèi)包含了在一個(gè)字符串中插入新元素的方法,可以用Insert在任意位置插入任意字符。而使用PadLeft/PadRight方法,可以在一個(gè)字符串的左右兩側(cè)進(jìn)行字符填充。 1Insert方法 2PadLeft/PadRight方法5.1.6 刪除字符串 String類(lèi)包含了刪除一個(gè)字符串的方法,可以用Remove方法在任意位置刪除任意長(zhǎng)度的字符,也可以使用Trim
6、/TrimEnd/TrimStart方法剪切掉字符串中的一些特定字符。 1Remove方法Remove方法從一個(gè)字符串的制定位置開(kāi)始,刪除指定數(shù)量的字符。2Trim/TrimStart/TrimEnd方法若想把一個(gè)字符串首尾處的一些特殊字符剪切掉,如去掉一個(gè)字符串首尾的空格等,可以使用String的Trim方法。 5.1.7 遍歷字符串 遍歷子字符串(簡(jiǎn)稱(chēng)子串)是指在一個(gè)字符串中尋找其中包含的子串或者某個(gè)字符,在String類(lèi)中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOfAny。1S
7、tartWith/EndsWith方法2IndexOf/LastIndexOf3IndexOfAny/LastIndexOfAny5.1.8 復(fù)制字符串String類(lèi)包含了在復(fù)制字符串方法Copy和CopyTo,可以完成對(duì)一個(gè)字符串及其一部分的復(fù)制操作。1Copy方法若想把一個(gè)字符串復(fù)制到另一個(gè)字符數(shù)組中,可以使用String的靜態(tài)方法Copy來(lái)實(shí)現(xiàn),其形式為:public static string Copy(string str);2CopyTo方法CopyTo方法可以實(shí)現(xiàn)Copy同樣的功能,但功能更為豐富,可以復(fù)制源字符串中的一部分到一個(gè)字符數(shù)組中。另外,CopyTo不是靜態(tài)方法,其形式
8、為:public void CopyTo(int sourceIndex, char destination, int destinationIndex, int count);5.1.9 大小寫(xiě)轉(zhuǎn)換 String提供了方便轉(zhuǎn)換字符串中所有字符大小寫(xiě)的方法ToUpper和ToLower。這兩個(gè)方法沒(méi)有輸入?yún)?shù),使用也非常簡(jiǎn)單。下例首先把“Hello”轉(zhuǎn)換為“HELLO”,然后再變?yōu)樾?xiě)形式“hello”。1./ToUpper|ToLower2.newStr=strA.ToUpper();3.Console.WriteLine(newStr);/輸出為HELLO4.newStr=strA.ToL
9、ower();5.Console.WriteLine(newStr);/輸出為hello 5.2 StringBuilder類(lèi)與String類(lèi)相比,System.Text.StringBuilder類(lèi)可以實(shí)現(xiàn)動(dòng)態(tài)字符串。此處,動(dòng)態(tài)的含義是指在修改字符串時(shí),系統(tǒng)不需要?jiǎng)?chuàng)建新的對(duì)象,不會(huì)重復(fù)開(kāi)辟新的內(nèi)存空間,而是直接在原StringBuilder對(duì)象的基礎(chǔ)上進(jìn)行修改。StringBuilder類(lèi)屬性和常用方法如圖所示。5.2.1 創(chuàng)建StringBuilder對(duì)象 StringBuilder類(lèi)位于命名空間System.Text中,使用時(shí),可以在文件頭通過(guò)using語(yǔ)句引入該命名空間: using
10、System.Text; 聲明StringBuilder對(duì)象需要使用new關(guān)鍵字,并可以對(duì)其進(jìn)行初始化。如下語(yǔ)句聲明了一個(gè)StringBuilder對(duì)象myStringBuilder,并初始化為“Hello”。 StringBuilder myStringBuilder=new StringBuilder(Hello);5.2.2 追加字符串追加一個(gè)StringBuilder是指將新的字符串添加到當(dāng)前StringBuilder字符串的結(jié)尾處,可以使用Append方法和AppendFormat方法來(lái)實(shí)現(xiàn)這個(gè)功能。1Append方法Append方法實(shí)現(xiàn)簡(jiǎn)單的追加功能,常用形式為:public St
11、ringBuilder Append(object value);2AppendFormat方法AppendFoamat方法可以實(shí)現(xiàn)對(duì)追加部分字符串的格式化,可以定義變量的格式,并將格式化后的字符串追加在StringBuilder后面。常用形式為:StringBuilder AppendFormat(string format, params object args);5.2.3 插入字符串 StringBuilder的插入操作是指將新的字符串插入到當(dāng)前StringBuilder字符串的指定位置,如“Hello”變?yōu)椤癏eeeello”??梢允褂肧tringBuilder類(lèi)的Insert方法來(lái)
12、實(shí)現(xiàn)這個(gè)功能,常用形式為: public StringBuilder Insert(int index,object value); 其中,參數(shù)index指定所要插入的位置,并從0開(kāi)始索引,如index=1,則會(huì)在原字符串的第2個(gè)字符之前進(jìn)行插入操作;同Append一樣,參數(shù)value并不僅是只可取字符串類(lèi)型。5.2.4 刪除字符串 StringBuilder的刪除操作可以從當(dāng)前StringBuilder字符串的指定位置,刪除一定數(shù)量的字符,例如把“Heeeello”變?yōu)椤癏ello”??梢允褂肧tringBuilder類(lèi)的Remove方法來(lái)實(shí)現(xiàn)這個(gè)功能,常用形式為: public Strin
13、gBuilder Remove( int startIndex, int length);5.3 正則表達(dá)式 正則表達(dá)式是一個(gè)非常大的題目,許多的編程語(yǔ)言和工具都支持正則表達(dá)式,.NET類(lèi)庫(kù)名字空間System.Text.RegularExpressions包括了一系列可以充分發(fā)揮正則表達(dá)式威力的類(lèi),如圖5-3所示。 本節(jié),首先介紹正則表達(dá)式的含義,然后簡(jiǎn)單介紹如何使用Regex類(lèi)來(lái)實(shí)現(xiàn)字符串的模式匹配,并給出構(gòu)造正則表達(dá)式的技術(shù)。除此之外,還可以充分利用RegularExpression空間中的其他類(lèi),實(shí)現(xiàn)諸如模式查找、模式替換等更為強(qiáng)大的功能。本課程不對(duì)其作更深入的探討。5.3.1 正則表
14、達(dá)式簡(jiǎn)介正則表達(dá)式是一種可以用于模式匹配的工具。簡(jiǎn)單地說(shuō),正則表達(dá)式就是一套規(guī)則,用于判定其他的元素是否符合它。例如,在網(wǎng)絡(luò)應(yīng)用上的一個(gè)用戶(hù)注冊(cè)頁(yè)面中(如論壇或者交友網(wǎng)站的注冊(cè)頁(yè)面),可能有“電子郵件”這一項(xiàng)需要用戶(hù)填寫(xiě)。Web系統(tǒng)需要判定用戶(hù)所填寫(xiě)的電子郵件地址是否合法,即是否符合電子郵件地址的規(guī)則。眾所周知,電子郵件的格式形如:可以抽象為這樣的規(guī)則:非空字符序列+非空字符序列+.+com|cn|net5.3.2 正則表達(dá)式(Regex)類(lèi) Regex類(lèi)包含若干靜態(tài)方法,用于使用正則表達(dá)式進(jìn)行字符串匹配,常用屬性和方法如圖5-4所示。 最常用的方法為Match,在輸入字符串參數(shù)中搜索正則表達(dá)
15、式的匹配項(xiàng),并將匹配成功的結(jié)果作為單個(gè)Match對(duì)象返回。常用形式為: public static Match Match( string input, string pattern);5.3.3 構(gòu)造正則表達(dá)式 正則表達(dá)式的本質(zhì)是使用一系列特殊字符模式,來(lái)表示某一類(lèi)字符串,如上一節(jié)示例中的正則表達(dá)式“a-zA-Z+a-zA-Z+.com$”,含義如下: (1)“a-zA-Z+”:指包含1個(gè)或多個(gè)大小寫(xiě)英文字母的字符串; (2)com$:指以“com”結(jié)尾的字符串; (3).:使用轉(zhuǎn)移字符“”來(lái)表示一個(gè)普通的字符“.”,因?yàn)椤?”在正則表達(dá)式中也具有特殊的作用。注意在使用轉(zhuǎn)移字符“”時(shí),需要在字符串前加上“”符號(hào)。5.3.4 示例:驗(yàn)證URL 本小節(jié)實(shí)現(xiàn)利用C#的正則表達(dá)式驗(yàn)證一個(gè)URL字符串的合法性。一個(gè)合法的URL如下: http:/ 其構(gòu)造規(guī)則為:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 華律勞務(wù)合同范本
- 2025年人造纖維(纖維素纖維)項(xiàng)目合作計(jì)劃書(shū)
- 合同范例三級(jí)
- 吊裝機(jī)租賃合同范本
- 2025年急救室設(shè)備器具合作協(xié)議書(shū)
- 2025年成品漿板包裝輸送系統(tǒng)項(xiàng)目發(fā)展計(jì)劃
- 2025年制漿和造紙專(zhuān)用設(shè)備項(xiàng)目建議書(shū)
- 變更房產(chǎn)合同范本
- 出售取向硅鋼合同范本
- 幻彩美甲店入股合同范本
- 自身免疫性腦炎護(hù)理常規(guī)
- 《信息技術(shù)基礎(chǔ)》高職全套教學(xué)課件
- GB/T 19077-2024粒度分析激光衍射法
- 露天礦山開(kāi)采施工組織方案
- 北京市西城區(qū)2022-2023學(xué)年高三上學(xué)期1月期末考試歷史試題 附答案
- 2024關(guān)于進(jìn)一步提升基層應(yīng)急管理能力的意見(jiàn)學(xué)習(xí)解讀課件
- 幼兒園小班健康公開(kāi)課《笑一笑》課件
- 《PLC應(yīng)用技術(shù)(西門(mén)子S7-1200)第二版》全套教學(xué)課件
- 單詞連連看答題闖關(guān)游戲課堂互動(dòng)課件1
- 加強(qiáng)文物古籍保護(hù)利用(2022年廣東廣州中考語(yǔ)文試卷非連續(xù)性文本閱讀試題及答案)
- 2024小學(xué)數(shù)學(xué)義務(wù)教育新課程標(biāo)準(zhǔn)(2022版)必考題庫(kù)附含答案
評(píng)論
0/150
提交評(píng)論