




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、字符串操作 字符串是應(yīng)用程序和用戶交互的主要方式,是評價一個編程語言非常重要的內(nèi)容。.NET提供了幾個類來快速實現(xiàn)字符串操作,包括String、System.Text命名空間等。本章將對這一部分內(nèi)容進行介紹。5.1 靜態(tài)串靜態(tài)串String System.String是最常用的字符串操作類,可以幫助開發(fā)者完成絕大部分的字符串操作功能,使用方便。 下面從各個應(yīng)用的角度對String類進行詳細的介紹。5.1.1 比較字符串比較字符串 比較字符串是指按照字典排序規(guī)則,判定兩個字符的相對大小。按照字典規(guī)則,在一本英文字典中,出現(xiàn)在前面的單詞小于出現(xiàn)在后面的單詞。在String類中,常用的比較字符串的方
2、法包括Compare、CompareTo、CompareOrdinal以及Equals,下面進行詳細介紹。Compare方法方法Compare方法是String類的靜態(tài)方法,用于全面比較兩個字符串對象,包括6種重載方式。下面使用Compare方法來比較兩個字符串,輸出結(jié)果如注釋語句所示。/定義兩個String對象,并對其賦值System.String strA=Hello;System.String strB=World;/CompareConsole.WriteLine(String.Compare(strA,strB);/-1Console.WriteLine(String.Compare
3、(strA,strA);/0Console.WriteLine(String.Compare(strB,strA);/1另外,CompareOrdinal方法同Compare方法非常類似,判定兩個字符串,但不考慮區(qū)域性問題,在此不再贅述。CompareTo方法方法CompareTo方法將當(dāng)前字符串對象與另一個對象做比較,其作用與Compare類似,返回值也相同。CompareTo與Compare相比,區(qū)別在于:CompareTo不是靜態(tài)方法,可以通過一個String對象調(diào)用;CompareTo沒有重載形式,只能按照大小寫敏感方式比較兩個整串。CompareTo方法的使用如下例所示。/定義兩個S
4、tring對象,并對其賦值System.String strA=Hello;System.String strB=World; /CompareToConsole.WriteLine(strA.CompareTo(strB);/-1Equals方法方法Equals方法用于方便地判定兩個字符串是否相同,有兩種重載形式:public bool Equals(string)public static bool Equals(string,string)如果兩個字符串相等,Equals()返回值為True;否則,返回False。Equals方法的使用如下例所示。/EqualsConsole.Write
5、Line(String.Equals(strA,strB); /falseConsole.WriteLine(strA.Equals(strB); /false 比較運算符比較運算符String支持兩個比較運算符“=”、“!=”,分別用于判定兩個字符是否相等和不等,并區(qū)分大小寫。相對于上面介紹的方法,這兩個運算符使用起來更加直觀和方便。下例中,使用“=”、“!=”對“Hello”和“World”進行比較。/=和!=Console.WriteLine(strA=strB);/falseConsole.WriteLine(strA!=strB);/false5.1.2 定位字符和子串 定位子串是指
6、在一個字符串尋找其中包含的子串或者某個字符,在String類中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOf下面進行詳細介紹。 StartWith/EndsWith方法方法StartWith方法可以判定一個字符串對象是否以另一個子字符串開頭,如果是返回True;否則返回False。其定義為:Public bool StartsWith(string value)其中,參數(shù)value即待判定的子字符串。/StartWithConsole.WriteLine(strA.StartsWith
7、(He);/trueConsole.WriteLine(strA.StartsWith(MM);/false另外,EndsWith方法可以判定一個字符是否以另一個子字符串結(jié)尾。IndexOf/LastIndexOf方法方法IndexOf方法用于搜索一個字符串,某個特定的字符或子串第一次出現(xiàn)的位置,該方法區(qū)分大小寫,并從字符串的首字符開始以計數(shù)。如果字符串中不包含這個字符或子串,則返回-1。共有如下6種重載形式。定位字符:int IndexOf(char value)int IndexOf(char value,int startIndex)int IndexOf(char value,int
8、startIndex,int count)定位子串:int IndexOf(string value)int IndexOf(string value,int startIndex)int IndexOf(string value,int startIndex,int count)在上述重載形式中,其參數(shù)含義如下:Value:待定位的字符或者子串。startIndex:在總串中開始搜索的起始位置。Count:在總串中從起始位置開始搜索的字符數(shù)。下例在“Hello”中尋找字符“l(fā)”第一次出現(xiàn)的位置。/IndexofConsole.WriteLine(strA.IndexOf(l);/2同Inde
9、xOf類似,LastIndexOf用于搜索在一個字符串中,某個特定的字符或子串最后一次出現(xiàn)的位置,其方法定義和返回值都與IndexOf相同,不再贅述。IndexOfAny/LastIndexOfAnyIndexOfAny方法功能同IndexOf類似,區(qū)別在于,可以搜索在一個字符串中,出現(xiàn)在一個字符數(shù)組中的任意字符第一次出現(xiàn)的位置。同樣,該方法區(qū)分大小寫,并從字符串的首字符開始以計數(shù)。如果字符串中不包括這個字符或子串,則返回-1。IndexOfAny有3種重載形式:int IndexOfAny(char anyOf)int IndexOf(char anyOf,int startIndex)in
10、t IndexOf(char anyOf,int startIndex,int count)在上述重載形式中,參數(shù)含義如下:anyOf:待定位的字符數(shù)組,方法將返回這個數(shù)組中任意一個字符第一次出現(xiàn)的位置。startIndex:在總串中開始搜索的起始位置。Count:在總串中從起始位置開始搜索的字符數(shù)。下例在“Hello”中尋找字符“l(fā)”第一次和最后一次出現(xiàn)的位置。/IndexofAny|LastIndexOfAnychar anyOf=H,e,l;Console.WriteLine(strA.IndexOfAny(anyOf);/0Console.WriteLine(strA.LastInde
11、xOfAny(anyOf);/3同IndexOfAny類似,LastIndexOfAny用于搜索在一個字符串中,出現(xiàn)在一個字符數(shù)組中任意字符最后一次出現(xiàn)的位置。5.1.3格式化字符串Format方法用于創(chuàng)建格式化的字符串以及連接多個字符串對象。Foramt方法也有多個重載形式,最常用的為:public static string Format(string format,params object args);其中,參數(shù)format用于指定返回字符串的格式,而args為一系列變量參數(shù)??梢酝ㄟ^下面的實例來掌握其使用方法。/FormatnewStr=;newStr=String.Format(0
12、,1!,strA,strB);Console.WriteLine(newStr);/Hello,World!在format參數(shù)中包含一些用大括號括起來的數(shù)字,如0、1,這些數(shù)字分別一一對應(yīng)于args參數(shù)數(shù)組中的變量。在生成結(jié)果字符串時,將使用這些變量代替i。需要說明的是,這些變量并不要求必須為String類型。在特定的應(yīng)用中,F(xiàn)ormat方法非常方便。例如,想要輸出一定格式的時間字符串,便可以使用Format方法,如下面代碼所示。newStr=String.Format(CurrentTime=0:yyyy-MM-dd,System.DateTime.Now);Console.WriteLin
13、e(newStr);/形如:2006-05-19其中,格式字符串“yyyy-MM-dd”指定返回時間的格式形如“2006-05-19”,其定義參考System.Globalization.DateTimeFormatInfo類。5.1.4 連接字符串 1. Concat方法方法 Concat方法用于連接兩個或多個字符串。Concat方法也有多個重載形式,最常用的為: public static string Concat(params string values); 其中,參數(shù)values用于指定所要連接的多個字符串,可以通過下面的實例來掌握其使用方法。 /Concat newStr=; ne
14、wStr=String.Concat(strA, ,strB); Console.WriteLine(newStr);/“Hello World 2. Join方法 Join方法利用一個字符數(shù)組和一個分隔符串構(gòu)造新的字符串。常用于把多個字符串連接在一起,并用一個特殊的符號來分隔開。Join方法的常用形式為: public static string Join(string separator,string values); 其中,參數(shù)value為指定的分隔符,而values用于指定所要連接的多個字符串?dāng)?shù)組,下例用“”分隔符把“Hello”和“World”連起來。 /Join newStr=;
15、String strArr=strA,strB; newStr=String.Join(,strArr); Console.WriteLine(newStr);/HelloWorld 3.連接運算符“+” String支持連接運算符“+”,可以方便地連接多個字符串,例如,下例把“Hello”和“World”連接起來。 /+ newStr=; newStr=strA+strB; Console.WriteLine(newStr);/HelloWorld5.1.5分隔字符串 使用前面介紹的Join方法,可以利用一個分隔符把多個字符串連接起來。反過來,使用Split方法可以把一個整串,執(zhí)照某個分隔符
16、,分裂成一系列小的字符串。例如,把整串,按照某個分隔符,分裂成一系列小的字符串。例如,把整串“HelloWorld”按照字符“”進行分裂,可以得到3個小的字符串,即“Hello”、“”(空串)和“World”。 Split有多個重載形式,最常用的形式為: public string Split(params char separator); 其中,參數(shù)separator數(shù)組包含分隔符。下例把“HelloWorld”進行分裂 /Split newStr=HelloWorld; char separator=; String splitStrings=new String100; splitStr
17、ings=newStr.Split(separator); int i=0; while(isplitStrings.Length) Console.WriteLine(item0:1,i,splitStringsi);i+; 輸出結(jié)果如下: Item0:Hello Item1: Item2:World5.1.6 插入和填充字符串 String類包含了在一個字符串中插入新元素的方法,可以用Insert方法在任意插入任意字符。 Insert方法用于在一個字符串的指定位置插入另一個字符串,從而構(gòu)造一個新的串。Insert方法也有多個重載形式,最常用的為: public string Insert(
18、int startIndex,string value); 其中,參數(shù)startIndex用于指定所要插入的位置,從開始索引;value指定所要插入的字符串。下例中,在“Hello”的字符“H”后面插入“World”,構(gòu)造一個串“HWorldello”。 /Insert newStr=; newStr=strA.Insert(1,strB); Console.WriteLine(newStr);/HWorldello5.1.7 刪除和剪切字符串String類包含了刪除一個字符串的方法,可以用Remove方法在任意位置刪除任意長度的字符,也可以使用Trim/TrimeEnd/TrimStart方
19、法剪切掉字符串中的一些特定字符。 Remove方法方法Remove方法從一個字符串的指定位置開始,刪除指定數(shù)量的字符。最常用的形式為:public string Remove(int startIndex,int count);其中,參數(shù)startIndex用于指定開始刪除的位置,從開始索引;count指定刪除的字符數(shù)量。下例中,把“Hello”中的“ell”刪掉。/RemovenewStr=;newStr=strA.Remove(1,3);Console.WriteLine(newStr);/HoTrim/TrimStart/TrimEnd方法方法若想把一個字符串首尾處的一些特殊字符剪切掉,
20、如去掉一個字符串首尾的空格等,可以使用String的Trim()方法。其形式如下:public string Trim()public string Trim(params char trimChars)其中,參數(shù)trimChars數(shù)組包含了指定要去掉的字符,如果缺省,則刪除空格符號。下例中,實現(xiàn)了對“Hello#$”的凈化,去掉首尾的特殊符號。/TrimnewStr=;char trimChars=,#,$, ;String strC=Hello# $;newStr=strC.Trim(trimChars);Console.WriteLine(newStr);/Hello另外,同Trim類似
21、,TrimStart和TrimEnd分別剪切掉一個字符串開頭和結(jié)尾處的特殊字符。5.1.8 復(fù)制字符串String類包括了復(fù)制字符串方法Copy和CopyTo,可以完成對一個字符串及其一部分的復(fù)制操作。Copy方法方法若想把一個字符串復(fù)制到另一個字符數(shù)組中,可以使用String的靜態(tài)方法Copy來實現(xiàn),其形式為:public string Copy(string str);其中,參數(shù)str為需要復(fù)制的源字符串,方法返回目標(biāo)字符串。下例中,把strA字符串“Hello”復(fù)制到newStr中。/CopynewStr=;newStr=String.Copy(strA);Console.WriteLi
22、ne(newStr);/HelloCopyTo方法方法CopyTo方法可以實現(xiàn)Copy同樣的功能,但功能更為豐富,可以復(fù)制字符串的一部分到一個字符數(shù)組中。另外,CopyTo不是靜態(tài)方法,其形式為:public void CopyTo(int sourceIndex,char destination,int destinationIndex,int count);其中,參數(shù)sourceIndex為需要復(fù)制的字符起始位置,destination為目標(biāo)字符數(shù)組,destinationIndex指定目標(biāo)數(shù)組中的開始存放位置,而count指定要復(fù)制的字符個數(shù)。下例中,把strA字符串“Hello”中的“
23、ell”復(fù)制到newCharArr中,并在newCharArr中從第2個元素開始存放。/CopyTochar newCharArr=new char100;strA.CopyTo(2,newCharArr,0,3);Console.WriteLine(newCharArr);/Hel5.1.9 替換字符串 想要替換一個字符串中的某些特定字符或者某個子串,可以使用Replace方法來實現(xiàn),其形式為: public string Replace(char oldChar, char newChar); public string Replace(string oldValue, string ne
24、wValue); 其中,參數(shù)oldChar和oldValue為待替換的字符和子串,而newChar和newValue為替換后的新字符和新子串。下例把“Hello”通過替換變?yōu)椤癏ero”。 /Replace newStr=strA.Replace(ll,r); Console.WriteLine(newStr);/Hero5.1.10 更改大小寫 String提供了方便轉(zhuǎn)換字符串中所有字符大小寫的方法ToUpper和ToLower。這兩個方法沒有輸入?yún)?shù),使用也非常簡單。下例首先把“Hello”轉(zhuǎn)換為“HELLO”,然后再變?yōu)樾懶问健癶ello”。 /ToUpper|ToLower newS
25、tr=strA.ToUpper(); Console.WriteLine(newStr);/HELLO newStr=strA.ToLower(); Console.WriteLine(newStr);/hello5.1.11 String小結(jié) 本節(jié)介紹了最常用的String類,并從比較、定位子串、格式化、連接、分裂、插入、刪除、復(fù)制、大小寫轉(zhuǎn)換10個方面介紹了其方法。 之所以稱String對象為靜態(tài)串,是因為一旦定義一個String對象,就是不可改變的。在使用其方法(如插入、刪除操作)時,都要在內(nèi)在中創(chuàng)建一個新的String對象,而不是在原對象的基礎(chǔ)上進行修改,這就需要開辟新的內(nèi)存空間。 如
26、果需要經(jīng)常進行串修改操作,使用String類無疑是非常耗費資源的,這時需要使用StringBuilder類。5.2 動態(tài)串動態(tài)串StringBuilder 與String類相比,System.Text.StringBuilder類可以實現(xiàn)動態(tài)字符串。此外,動態(tài)的含義是指在修改字符串時,系統(tǒng)不需要創(chuàng)建新的對象,不會重復(fù)開辟新的內(nèi)存空間,而是直接在原StringBuilder對象的基礎(chǔ)上進行修改。 下面,將從各個應(yīng)用的角度,詳細討論StringBuilder類。5.2.1 聲明StringBuilder串 StringBuilder類位于命名空間System.Text中,使用時,可以在文件頭通過u
27、sing語句引入該空間: using System.Text; 聲明StringBuilder對象需要使用new關(guān)鍵字,并可以對其進行初始化。如以下語句聲明了一個StringBuilder對象myStringBuilder,并初始化為“Hello”: StringBuilder myStringBuilder=new StringBuilder(Hello); 如果不使用using關(guān)鍵字在文件頭引入System.Text命名空間,也可以通過空間限定來聲明StringBuilder對象: System.Text.StringBuilder myStringBuilder=new StringBu
28、ilder(Hello); 在聲明時,也可以不給出初始值,然后通過其方法進行賦值。5.2.2 設(shè)置StringBuilder容量 StringBuilder對象為動態(tài)字符串,可以對其設(shè)置好的字符數(shù)量進行擴展。另外,還可以設(shè)置一個最大長度,這個最大長度稱為該StringBuilder對象的容量(Capacity)。 為StringBuilder設(shè)置容量的意義在于,當(dāng)修改StringBuilder字符串時,當(dāng)其實際字符長度(即字符串已有的字符數(shù)量)未達到其容量之前,StringBuilder不會重新分配空間;當(dāng)達到容量時,StringBuilder會在原空間的基礎(chǔ)之上,自動不進行設(shè)置,String
29、Builder默認初始分配16個字符長度。 有兩種方式來設(shè)置一個StringBuilder對象的容量。使用構(gòu)造函數(shù)使用構(gòu)造函數(shù)StringBuilder構(gòu)造函數(shù)可以接受容量參數(shù),例如,下面聲明一個StringBuilder對象sb2,并設(shè)置其容量為100。/使用構(gòu)造函數(shù)StringBuilder sb2=new StringBuilder(Hello,100);使用使用Capacity讀讀/寫屬性寫屬性Capacity屬性指定StringBuilder對象的容量,例如下面語句首先一個StringBuilder對象sb3,然后利用Capacity屬性設(shè)置其容量為100。/使用Capacity屬性
30、StringBuilder sb3=new StringBuilder(Hello);sb3.Capacity=100;5.2.3 追加操作 追加一個StringBuilder是指將新的字符串添加到當(dāng)前StringBuilder字符串的結(jié)尾處,可以使用Append和AppendFormat來實現(xiàn)這個功能。 Append方法方法 Append方法實現(xiàn)簡單的追加功能,常用形式為: public StringBuilder Append(object value); 其中,參數(shù)value既可以是字符串類型,也可以是其他的數(shù)據(jù)類型,如bool、byte、int等。下例中,把一個StringBuilde
31、r字符串“Hello”追加為“Hello World!”。 /Append StringBuilder sb4=new StringBuilder(Hello); sb4.Append( World!); Console.WriteLine(sb4);/Hello World!AppendFormat方法方法AppendFormat方法可以實現(xiàn)對追加部分字符串的格式化,可以定義變量的格式,并將格式化后的字符串追加在StringBuilder后面。常用的形式為:StringBuilder AppendFormat(string format,params object args);其中,args
32、數(shù)組指定所要追加的多個變量。format參數(shù)包含格式規(guī)范的字符串,其中包括一系列用大括號括起來的格式字符,如0:u。這里,0代表對應(yīng)args參數(shù)數(shù)組中的第0個變量,而u定義其格式。下例中,把一個StringBuilder字符串“Today is”追加“Today is *當(dāng)前日期*”。/AppendFormatStringBuilder sb5=new StringBuilder(Today is );sb5.AppendFormat(0:yyyy-MM-dd,System.DateTime.Now);Console.WriteLine(sb5);/形如:Today is 2008-10-20
33、5.2.4 插入操作 StringBuilder的插入操作是指將新的字符串插入到當(dāng)前的StringBuilder字符串的指定位置,如“Hello”變?yōu)椤癏eeeello”??梢允褂肧tringBuilder類的Insert方法來實現(xiàn)這個功能,常用形式為: public StringBuilder Insert(int index, object value); 其中,參數(shù)index指定所要插入的位置,并從0開始索引,如index=1,則會在原字符串的第2個字符之前進行插入操作;同Append一樣,參數(shù)value并不僅是只可取字符串類型。下例中,把一個StringBuilder字符串“Hello
34、”通過插入操作修改為“Heeeello”。 /Insert StringBuilder sb6=new StringBuilder(Hello); sb6.Insert(2,eee); Console.WriteLine(sb6);/Heeeello5.2.5 刪除操作 StringBuilder的刪除操作可以從當(dāng)前StringBuilder字符串的指定位置,刪除一定數(shù)量的字符,例如把“Heeeello”變?yōu)椤癏ello”??梢允褂肧tringBuilder類的Remove方法來實現(xiàn)這個功能,常用形式為: public StringBuilder Remove(int startIndex,
35、int length); 其中,參數(shù)startIndex指定所要刪除的起始位置,其含義同Insert中的index相同;length參數(shù)指定所要刪除的字符數(shù)量。下例中,把一個StringBuilder字符串“Heeeello”通過刪除操作修改為“Hello”。 /Remove StringBuilder sb7=new StringBuilder(Heeello); sb7.Remove(2,3);/在”He”后面刪除個字符 Console.WriteLine(sb7);/Hello!5.2.6 替換操作 StringBuilder使用Replace方法來實現(xiàn)替換操作,例如把“Hello”變?yōu)?/p>
36、“Hero”,就需要使用替換操作,將“l(fā)l”替換為“r”。這同String類的Replace方法非常類似,其常用形式包括: public StringBuilder Replace(char oldChar, char newChar); public StringBuilder Replace(string oldValue, string newValue); 其中,參數(shù)oldChar和oldValue為待替換的字符和子串,而newChar和newValue為替換后的新字符和新子串。 下例把“Hello”通過替換為“Hero”。 /Replace StringBuilder sb8=new StringBuilder(Hello); sb8=sb8.Replace(ll,r); Console.WriteLine(sb8);/Hero5.2.7 與String比較 通過上
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同范本 工傷
- 代理鉆床銷售企業(yè)合同范本
- 京東商城合同范本
- 人事中介合同范本
- 保險合作合同范本
- 前公司勞務(wù)合同范本
- 募資合同范本
- 2024年普洱市瀾滄縣縣第二人民醫(yī)院招聘考試真題
- 2024年宿遷市人大常委會辦公室招聘筆試真題
- 2024年欽州市第二人民醫(yī)院信息工程師招聘筆試真題
- 雷達干擾技術(shù)概述
- JBT 7901-2023 金屬材料實驗室均勻腐蝕全浸試驗方法 (正式版)
- 2024年南通建筑電工證考試題模擬試題電工培訓(xùn)試題及答案(全國通用)
- 2025小學(xué)道德與法治開學(xué)第一課(思想政治理論教育課)
- 基于STM32Cube的嵌入式系統(tǒng)應(yīng)用 教案
- 動畫分鏡頭腳本設(shè)計課件
- 江蘇省成人高等教育畢業(yè)生登記表
- 促銷主管工作計劃
- 2024年管理學(xué)理論考核試題及答案
- 手術(shù)體位相關(guān)周圍神經(jīng)損傷及預(yù)防課件
- 供應(yīng)商變更申請表
評論
0/150
提交評論