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


C#(靜態String類)

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

比較字符串是指按照字典排序規則,判定兩個字符的相對大小。按照字典規則,在一本英文字典中,出現在前面的單詞小於出現在后面的單詞。在String類中,常用的比較字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals,下面進行詳細介紹。
Compare方法是String類的靜態方法,用於全面比較兩個字符串對象,包括6種重載方法。CompareTo方法將當前字符串對象與另一個對象做比較,其作用與Compare類似,返回值也相同。CompareTo與Compare相比,區別在於:CompareTo不是靜態方法,可以通過一個String對象調用;CompareTo沒有重載形式,只能按照大小寫敏感方式比較兩個整串。
Equals方法用於方便地判定兩個字符串是否相同,有兩種重載形式:
public bool Equals(string)
public static bool Equals(string,string)
如果兩個字符串相等,Equals()返回值為True;否則,返回False。
String支持兩個比較運算符“==”、“!=”,分別用於判定兩個字符是否相等和不等,並區分大小寫。相對於上面介紹的方法,這兩個運算符使用起來更加直觀和方便。下例中,使用“==”、“!=”對“Hello”和“World”進行比較。
2. 定位字符串和子串

定位子串是指在一個字符串尋找其中包含的子串或者某個字符,在String類中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny /LastIndexOf下面進行詳細介紹。
StartWith/EndsWithStartWith方法
可以判定一個字符串對象是否以另一個子字符串開頭,如果是返回True;否則返回False。其定義為:
Public bool StartsWith(string value) //其中,參數value即待判定的子字符串。
IndexOf/LastIndexOf
IndexOf方法用於搜索一個字符串,某個特定的字符或子串第一次出現的位置,該方法區分大小寫,並從字符串的首字符開始以0計數。如果字符串中不包含這個字符或子串,則返回-1。共有如下6種重載形式。
定位字符:
intIndexOf(charvalue)
intIndexOf(charvalue,intstartIndex)
intIndexOf(charvalue,intstartIndex,intcount)
定位子串:
intIndexOf(stringvalue)
intIndexOf(stringvalue,intstartIndex)
intIndexOf(stringvalue,intstartIndex,intcount)
在上述重載形式中,其參數含義如下:
Value:待定位的字符或者子串。
startIndex:在總串中開始搜索的起始位置。
Count:在總串中從起始位置開始搜索的字符數。
IndexOfAny/LastIndexOfAny方法
其功能同IndexOf類似,區別在於,可以搜索在一個字符串中,出現在一個字符數組中的任意字符第一次出現的位置。同樣,該方法區分大小寫,並從字符串的首字符開始以0計數。如果字符串中不包括這個字符或子串,則返回-1。IndexOfAny有3種重載形式:
int IndexOfAny(char[] anyOf)
int IndexOfAny(char[] anyOf,int startIndex)
int IndexOfAny(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(intstartIndex,stringvalue);
其中,參數startIndex用於指定所要插入的位置,從0開始索引;value指定所要插入的字符串。下例中,在“Hello”的字符“H”后面插入“World”,構造一個串“HWorldello”。
//Insert
newStr="";
newStr=strA.Insert(1,strB);
Console.WriteLine(newStr);//"HWorldello"
7. 刪除和剪切字符串

Remove方法
Remove方法從一個字符串的指定位置開始,刪除指定數量的字符。最常用的形式為:
public string Remove(intstartIndex,intcount);
其中,參數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(stringstr);其中,參數str為需要復制的源字符串,方法返回目標字符串。
CopyTo方法
CopyTo方法可以實現Copy同樣的功能,但功能更為豐富,可以復制字符串的一部分到一個字符數組中。另外,CopyTo不是靜態方法,其形式為:
public void CopyTo(intsourceIndex,char[] destination,intdestinationIndex,intcount);
其中,參數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類。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM