字符串和正則表達(dá)式
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
System.String是一個(gè)功能非常強(qiáng)大且用途非常廣泛的基類,但它不是.NET中唯一與字符串相關(guān)的類,特別是System.Text和System.Text.RegularExpressions命名空間中的類。本文主要介紹內(nèi)容:
1、創(chuàng)建字符串 2、格式化表達(dá)式 3、正則表達(dá)式 一、System.String類 System.String是一個(gè)類,專門(mén)用于存儲(chǔ)字符串,允許對(duì)字符串進(jìn)行許多操作。 例如: string messsage1 = "Hello"; // return "Hello" C#還允許類似于索引符的語(yǔ)法來(lái)提取指定的字符:message1 += ", There"; // return "Hello, There" string message2 = message1 + "!" //return "Hello, There!" char char4 = "message"[4]; //return ''a'' 1.1 創(chuàng)建字符串 string類的功能非常強(qiáng)大,但是它存在一個(gè)問(wèn)題:重復(fù)修改給定的字符串,效率很低。它實(shí)際上是一個(gè)不可變的數(shù)據(jù)類型,一旦對(duì)字符串進(jìn)行了初始化,該字符串就不能改變了。修改該字符串的內(nèi)容時(shí),實(shí)際上是創(chuàng)建一個(gè)新的字符串,如果有必要,可以把舊的字符串內(nèi)容復(fù)制到新字符串中。 例如: string greetingText= "Hello. "; 在執(zhí)行這段代碼時(shí),首先創(chuàng)建一個(gè)String對(duì)象greetingText,并初始化為文本"Hello. "(最后是一個(gè)空格)。此時(shí).NET運(yùn)行庫(kù)為該字符串分配足夠的內(nèi)存在保存初始文本(7個(gè)字符),再設(shè)置變量greetingText,表示這個(gè)字符串實(shí)例。從表面上看,執(zhí)行下一句代碼,是把新的文本直接添加到初始文本的后面,但實(shí)際并非如此執(zhí)行的。而是另外創(chuàng)建一個(gè)新的字符串實(shí)例,給他分配足夠的內(nèi)存,以保存合并起來(lái)的文本,然后更新存儲(chǔ)再變量greetingText中的地址,使變量指向新的字符串對(duì)象。舊的字符串對(duì)象被撤銷了引用——不再有變量引用它,下一次垃圾收集器清理應(yīng)用程序中所有未使用的對(duì)象時(shí),就會(huì)刪除它。greetingText += "This is source code"; 當(dāng)字符串的長(zhǎng)度很大的時(shí)候,這樣做顯然影響了執(zhí)行效率,所以C#中用System.Text.StringBuilder類來(lái)處理較長(zhǎng)的字符串。StringBuilder類功能沒(méi)有String類強(qiáng)大,功能僅限于替換和添加或刪除字符串中的文本,但是工作方式非常高效。 用StringBuilder類創(chuàng)建字符串: StringBuilder greetingBuilder = new StringBuilder("Hello from all the guys at Wrox Press. ", 150);//顯示給定初始文本內(nèi)容和分配內(nèi)存長(zhǎng)度 StringBuilder message = new StringBuilder("Hello");//僅僅給出字符串,系統(tǒng)自動(dòng)分配內(nèi)存 StringBuilder message2 = new StringBuilder(20);//給指定容量創(chuàng)建一個(gè)空的StringBuiler StringBuiler類有兩個(gè)主要屬性: Length指定字符串的實(shí)際長(zhǎng)度 Capacity是字符串占據(jù)存儲(chǔ)單元的長(zhǎng)度 StringBuilder類的主要方法: Append()方法,在字符串尾部添加新的文本 Replace()方法,替換文本 注意:不能把StringBuilder轉(zhuǎn)換為String,如果要把StringBuilder的內(nèi)容輸出為String,唯一的方式是使用ToString()方法。 1.2 格式化字符串 double d = 13.45; {}中的0、1等分別對(duì)應(yīng)后面的d和i,10:E是格式,表示占10個(gè)字符,如果數(shù)字是正數(shù),結(jié)果向右對(duì)齊,如果是負(fù)數(shù)則左對(duì)齊。E表示科學(xué)計(jì)數(shù)法。int i = 45; sting result = String.Format("The double is {0,10:E} and the int contains {1}",d,i);
二、正則表達(dá)式 2.1 正則表達(dá)式概述 正則表達(dá)式語(yǔ)言是一種專門(mén)用于字符串處理的語(yǔ)言,使用正則表達(dá)式可以對(duì)字符串執(zhí)行許多復(fù)雜而高級(jí)的操作,例如:區(qū)分URI的各個(gè)元素(例如:http://www.sina.com.cn,提取協(xié)議、計(jì)算機(jī)名、文件名等)。 在C#中只需要用System.Text.RegularExpressions類的RegEx()方法或者調(diào)用靜態(tài)方法RegEx(),給它們傳遞要處理的字符串和一個(gè)正則表達(dá)式,就可以完成我們所需要的操作,得到預(yù)期的結(jié)果了。 下面列出正則表達(dá)式常用字符表
可以把要替換的字符放到括號(hào)中:[1│C]表示字符可以是1或者C,如果要搜索map或者man,可以用ma[n│p]。 方括號(hào)也可以表示范圍:[a-z]表示a到z的所有小寫(xiě)字母。 示例如下: string Text = @"This comprehensive compendium provides a broad and thorough investigation of all aspects of programming with ASP.NET"; string pattern = @"\ba";//查找所有以a開(kāi)頭的字符 MatchCollection matches = Regex.Matches(Text, pattern, RegexOptions.IgnoreCase); 該文章在 2017/2/7 18:48:30 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |