字符串處理總結之一(C#String類)

C#(靜態String類)

C#中提供了比較全面的字符串處理方法,不少函數都進行了封裝爲咱們的編程工做提供了很大的便利。System.String是最經常使用的字符串操做類,能夠幫助開發者完成絕大部分的字符串操做功能,使用方便。編程

1. 比較字符串

比較字符串是指按照字典排序規則,斷定兩個字符的相對大小。按照字典規則,在一本英文字典中,出如今前面的單詞小於出如今後面的單詞。在String類中,經常使用的比較字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals,下面進行詳細介紹。數組

Compare方法是String類的靜態方法,用於全面比較兩個字符串對象,包括6種重載方法。CompareTo方法將當前字符串對象與另外一個對象作比較,其做用與Compare相似,返回值也相同。CompareTo與Compare相比,區別在於:CompareTo不是靜態方法,能夠經過一個String對象調用;CompareTo沒有重載形式,只能按照大小寫敏感方式比較兩個整串。函數

Equals方法用於方便地斷定兩個字符串是否相同,有兩種重載形式:ui

public boolEquals(string)spa

public static boolEquals(string,string)orm

若是兩個字符串相等,Equals()返回值爲True;不然,返回False。對象

String支持兩個比較運算符「==」、「!=,分別用於斷定兩個字符是否相等和不等,並區分大小寫。相對於上面介紹的方法,這兩個運算符使用起來更加直觀和方便。下例中,使用「==」、「!=」對「Hello」和「World」進行比較。排序

2. 定位字符串和子串

定位子串是指在一個字符串尋找其中包含的子串或者某個字符,在String類中,經常使用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny /LastIndexOf下面進行詳細介紹。索引

StartWith/EndsWith內存

StartWith方法能夠斷定一個字符串對象是否以另外一個子字符串開頭,若是是返回True;不然返回False。其定義爲:

Public bool StartsWith(string value) //其中,參數value即待斷定的子字符串。

IndexOf/LastIndexOf

IndexOf方法用於搜索一個字符串,某個特定的字符或子串第一次出現的位置,該方法區分大小寫,並從字符串的首字符開始以0計數。若是字符串中不包含這個字符或子串,則返回-1。共有以下6種重載形式。

定位字符: 

  1. intIndexOf(char value)
  2. intIndexOf(char value,int startIndex)
  3. intIndexOf(char value,int startIndex,intcount) 

定位子串: 

  1. intIndexOf(string value)
  2. intIndexOf(string value,int startIndex)
  3. intIndexOf(string value,int startIndex,intcount) 

在上述重載形式中,其參數含義以下:

Value:待定位的字符或者子串。

startIndex:在總串中開始搜索的起始位置。

Count:在總串中從起始位置開始搜索的字符數。

IndexOfAny/LastIndexOfAny

IndexOfAny方法其功能同IndexOf相似,區別在於,能夠搜索在一個字符串中,出如今一個字符數組中的任意字符第一次出現的位置。一樣,該方法區分大小寫,並從字符串的首字符開始以0計數。若是字符串中不包括這個字符或子串,則返回-1。IndexOfAny有3種重載形式: 

  1. intIndexOfAny(char[] anyOf)
  2. intIndexOf(char[] anyOf,int startIndex)
  3. intIndexOf(char[] anyOf,int startIndex,int count) 

在上述重載形式中,參數含義以下:

anyOf:待定位的字符數組,方法將返回這個數組中任意一個字符第一次出現的位置。

startIndex:在總串中開始搜索的起始位置。

Count:在總串中從起始位置開始搜索的字符數。

3. 格式化字符串

Format方法用於建立格式化的字符串以及鏈接多個字符串對象。Foramt方法也有多個重載形式,最經常使用的爲:

public static string Format(string format,params object[] args);

其中,參數format用於指定返回字符串的格式,而args爲一系列變量參數。能夠經過下面的實例來掌握其使用方法。

newStr="";

newStr=String.Format("{0},{1}!",strA,strB);

Console.WriteLine(newStr);//Hello,World!

在format參數中包含一些用大括號括起來的數字,如{0}、{1},這些數字分別一一對應於args參數數組中的變量。在生成結果字符串時,將使用這些變量代替{i}。須要說明的是,這些變量並不要求必須爲String類型。在特定的應用中,Format方法很是方便。例如,想要輸出必定格式的時間字符串,即可以使用Format方法,以下面代碼所示。

newStr=String.Format("CurrentTime={0:yyyy-MM-dd}",System.DateTime.Now);

Console.WriteLine(newStr);//形如:2006-05-19

其中,格式字符串「yyyy-MM-dd」指定返回時間的格式形如「2006-05-19」,其定義參考System.Globalization.DateTimeFormatInfo類。

4. 鏈接字符串

Concat方法

Concat方法用於鏈接兩個或多個字符串。Concat方法也有多個重載形式,最經常使用的爲:public static string Concat(paramsstring[] values);其中,參數values用於指定所要鏈接的多個字符串,能夠經過下面的實例來掌握其使用方法。

//ConcatnewStr="";

newStr=String.Concat(strA," ",strB);

Console.WriteLine(newStr);//「Hello World"

Join方法

Join方法利用一個字符數組和一個分隔符串構造新的字符串。經常使用於把多個字符串鏈接在一塊兒,並用一個特殊的符號來分隔開。Join方法的經常使用形式爲:public static string Join(stringseparator,string[] values);其中,參數value爲指定的分隔符,而values用於指定所要鏈接的多個字符串數組,下例用「^^」分隔符把「Hello」和「World」連起來。

//Join

newStr="";

String[] strArr={strA,strB};

newStr=String.Join("^^",strArr);

Console.WriteLine(newStr);//"Hello^^World"

鏈接運算符「+」

String支持鏈接運算符「+」,能夠方便地鏈接多個字符串,例如,下例把「Hello」和「World」鏈接起來。

newStr="";

newStr=strA+strB;

Console.WriteLine(newStr);//"HelloWorld"

5. 分隔字符串

使用前面介紹的Join方法,能夠利用一個分隔符把多個字符串鏈接起來。反過來,使用Split方法能夠把一個整串,執照某個分隔符,分裂成一系列小的字符串。例如,把整串,按照某個分隔符,分裂成一系列小的字符串。例如,把整串「Hello^^World」按照字符「^」進行分裂,能夠獲得3個小的字符串,即「Hello」、「」(空串)和「World」。

Split有多個重載形式,最經常使用的形式爲:

public string[] Split(paramschar[] separator);

其中,參數separator數組包含分隔符。下例把「Hello^^World」進行分裂

//Split

newStr="Hello^^World";

char[] separator={'^'};

String[] splitStrings=new String[100];

splitStrings=newStr.Split(separator);

inti=0;

while(i<splitStrings.Length)

{

Console.WriteLine("item{0}:{1}",i,splitStrings[i]);

i++;

}

輸出結果以下:Item0:Hello Item1:  Item2:World

6. 插入和填充字符串

String類包含了在一個字符串中插入新元素的方法,能夠用Insert方法在任意插入任意字符。Insert方法用於在一個字符串的指定位置插入另外一個字符串,從而構造一個新的串。Insert方法也有多個重載形式,最經常使用的爲:

public string Insert(int startIndex,string value);

其中,參數startIndex用於指定所要插入的位置,從0開始索引;value指定所要插入的字符串。下例中,在「Hello」的字符「H」後面插入「World」,構造一個串「HWorldello」。

//Insert

newStr="";

newStr=strA.Insert(1,strB);

Console.WriteLine(newStr);//"HWorldello"

7. 刪除和剪切字符串

Remove方法

Remove方法從一個字符串的指定位置開始,刪除指定數量的字符。最經常使用的形式爲:

public string Remove(int startIndex,int count);

其中,參數startIndex用於指定開始刪除的位置,從0開始索引;count指定刪除的字符數量。下例中,把「Hello」中的「ell」刪掉。

//RemovenewStr="";newStr=strA.Remove(1,3);

Console.WriteLine(newStr);//"Ho"

Trim/TrimStart/TrimEnd

Trim方法

若想把一個字符串首尾處的一些特殊字符剪切掉,如去掉一個字符串首尾的空格等,可使用String的Trim()方法。其形式以下:

public string Trim();

public string Trim(paramschar[] trimChars);

其中,參數trimChars數組包含了指定要去掉的字符,若是缺省,則刪除空格符號。下例中,實現了對「@Hello#$」的淨化,去掉首尾的特殊符號。

//Trim

newStr="";

char[] trimChars={'@','#','$',' '};

String strC="@Hello# $";

newStr=strC.Trim(trimChars);

Console.WriteLine(newStr);//"Hello"

另外,同Trim相似,TrimStart和TrimEnd分別剪切掉一個字符串開頭和結尾處的特殊字符。

8. 複製字符串

String類包括了複製字符串方法Copy和CopyTo,能夠完成對一個字符串及其一部分的複製操做。

Copy方法

若想把一個字符串複製到另外一個字符數組中,可使用String的靜態方法Copy來實現,其形式爲:public string Copy(string str);其中,參數str爲須要複製的源字符串,方法返回目標字符串。

CopyTo方法

CopyTo方法能夠實現Copy一樣的功能,但功能更爲豐富,能夠複製字符串的一部分到一個字符數組中。另外,CopyTo不是靜態方法,其形式爲:

public void CopyTo(int sourceIndex,char[] destination,int destinationIndex,int count);

其中,參數sourceIndex爲須要複製的字符起始位置,destination爲目標字符數組,destinationIndex指定目標數組中的開始存放位置,而count指定要複製的字符個數。

下例中,把strA字符串「Hello」中的「ell」複製到newCharArr中,並在newCharArr中從第2個元素開始存放。

char[] newCharArr=new char[100];

strA.CopyTo(2,newCharArr,0,3);

Console.WriteLine(newCharArr);//"Hel"

9. 替換字符串

要替換一個字符串中的某些特定字符或者某個子串,可使用Replace方法來實現,其形式爲:

 public string Replace(char oldChar, char newChar);

 public string Replace(string oldValue, string newValue);

 其中,參數oldChar和oldValue爲待替換的字符和子串,而newChar和newValue爲替換後的新字符和新子串。下例把「Hello」經過替換變爲「Hero」。

 //Replace

 newStr=strA.Replace("ll","r");

 Console.WriteLine(newStr);

10. 更改大小寫

String提供了方便轉換字符串中全部字符大小寫的方法ToUpper和ToLower。這兩個方法沒有輸入參數,使用也很是簡單。下例首先把「Hello」轉換爲「HELLO」,而後再變爲小寫形式「hello」。

本節介紹了最經常使用的String類,並從比較、定位子串、格式化、鏈接、分裂、插入、刪除、複製、大小寫轉換10個方面介紹了其方法。之因此稱String對象爲靜態串,是由於一旦定義一個String對象,就是不可改變的。在使用其方法(如插入、刪除操做)時,都要在內在中建立一個新的String對象,而不是在原對象的基礎上進行修改,這就須要開闢新的內存空間。若是須要常常進行串修改操做,使用String類無疑是很是耗費資源的,這時須要使用StringBuilder類。

相關文章
相關標籤/搜索