C#——字符串操做


String/Stringbuilder

System.Text.StringBuilder 類。在 StringBuilder 類中,僅限於替換、添加和刪除字符串中文本的操做,但它的效率遠遠高於 String。正則表達式

StringBuilder stringBuilder = new StringBuilder(30,300);編程

StringBuilder 類在初始化的時候,提供許多構造函數用來初始化當前實例的初始大小和可存儲的最大字符數以及用來初始化當前實例的字符串。數組


String :字符串類型。網絡



字符串操做:

C#字符串經常使用方法ide


1、string關鍵字與StringBuilder類函數

C#字符串是使用string關鍵字聲明的一個字符數組。字符串是使用引號聲明的,以下例所示: 性能

strings="Hello,World!"; ui

字符串對象是「不可變的」,即它們一旦建立就沒法更改。對字符串進行操做的方法實際上返回的是新的字符串對象。所以,出於性能方面的緣由,大量的鏈接或其餘涉及字符串的操做應當用StringBuilder類執行,以下所示:idea

1.System.Text.StringBuildersb=newSystem.Text.StringBuilder();  spa

2.sb.Append("one");  

3.sb.Append("two");  

4.sb.Append("three");  

5.stringstr=sb.ToString();


2、C#字符串使用

1、轉義字符「\」

字符串中能夠包含轉義符,如「\n」(新行)和「\t」(製表符)。

若是但願包含反斜槓,則它前面必須還有另外一個反斜槓,如「\\」。

2、「@」符號

@符號會告知字符串構造函數忽略轉義符和分行符。

所以,如下兩個字符串是徹底相同的:

1.stringp1="\\\\MyDocuments\\MyFiles\\";  
2.stringp2=@"\\MyDocuments\MyFiles\"; 


3、ToString()

如同全部從Object派生的對象同樣,字符串也提供了ToString方法,用於將值轉換爲字符串。此方法可用於將數值轉換爲C#字符串,以下所示:

1.int year=1999;  
2.stringmsg="Evewasbornin"+year.ToString();  
3.System.Console.WriteLine(msg);//outputs"Evewasbornin1999"

另外,能夠經過參數格式化ToString()的顯示輸出。如,對於時間類型格式,能夠經過ToString()方法自定義時間顯示格式。如:

1.System.DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss.fff");  
2.//outputs"2009-03-1118:05:16.345" 
3.//"MM":指定月份爲2位字符串,不足2位則前方補"0""M":爲月份數值轉換的字符串;
4.//"HH":表示24小時制的小時;"hh"表示12小時制的小時;


4、SubString()

格式:Substring(intstartindex,intlen)

用於獲取源字符串指定起始位置startindex,指定長度len的字符串。

參數Startindex索引從0開始,且最大值必須小於源字符串的長度,不然會編譯異常;

參數len的值必須不大於源字符串索引指定位置開始,以後的字符串字符總長度,不然會出現異常;

示例:

1.strings4="VisualC#Express";  
2.System.Console.WriteLine(s4.Substring(7,2));//outputs"C#" 
3.System.Console.WriteLine(s4.Replace("C#","Basic"));//outputs"VisualBasicExpress"


5、Replace()

格式:Replace(stringoldValue,stringnewValue)

用於C#字符串中特定字符串組合的替換,即將源字符串中的全部oldValue字符串替換爲newValue字符串。

示例:

1.strings5="VisualC#Express";  
2.System.Console.WriteLine(s5.Replace("C#","VB"));//outputs"VisualVBExpress"



6、Split()

將字符串拆分爲子字符串(如將句子拆分爲各個單詞)是一個常見的編程任務。Split()方法使用分隔符(如空格字符)char數組,並返回一個子字符串數組。您可使用foreach訪問此數組。

示例:

   char[]delimit=newchar[]{''};  

   strings14="Thecatsatonthemat.";  

   foreach(stringsubstrins14.Split(delimit))  

   {  

       System.Console.WriteLine(substr);  

   }

此代碼將在單獨的行上輸出每一個單詞,以下所示:

The

cat

sat

on

the

mat.

下面的代碼示例演示如何使用System.String.Split方法分析字符串。此方法返回一個字符串數組,其中每一個元素是一個單詞。做爲輸入,Split採用一個字符數組指示哪些字符被用做分隔符。本示例中使用了空格、逗號、句點、冒號和製表符。一個含有這些分隔符的數組被傳遞給Split,並使用結果字符串數組分別顯示句子中的每一個單詞。

示例:

classTestStringSplit  

{  

    staticvoidMain()  

   {

       char[]delimiterChars={'',',','.',':','\t'};  

       stringtext="one\ttwothree:four,fivesixseven";  

       System.Console.WriteLine("Originaltext:'{0}'",text);  

       string[]words=text.Split(delimiterChars);

       System.Console.WriteLine("{0}wordsintext:",words.Length);  

       foreach(stringsinwords)  

       {

           System.Console.WriteLine(s);  

       }  

     }

}

輸出:

Originaltext:'onetwothree:four,fivesixseven'

7wordsintext:

one

two

three

four

five

six

seven


另外,還可經過正則表達式Regex.Split()的方法,經過C#字符串分隔字符串。

示例:

1.usingSystem.Text.RegularExpressions;//須要引用正則表達式的命名空間
2.stringstr="aaajsbbbjsccc";  
3.string[]sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);//正則表達式
4.//RegexOptions.IgnoreCase表示忽略字母大小寫
5.foreach(stringiinsArray)Response.Write(i.ToString()+""); 

輸出:

aaa

bbb

ccc


7、Trim()

Trim()從當前String對象移除全部前導空白字符和尾部空白字符。

示例:

1.strings7="VisualC#Express";  
2.System.Console.WriteLine(s7);//outputs"VisualC#Express" 
3.System.Console.WriteLine(s7.Trim());//outputs"VisualC#Express"

8、ToCharArray()

格式:ToCharArray(intstartindex,intlen)

用於將字符複製到字符數組。

示例:

strings8="Hello,World";  

char[]arr=s8.ToCharArray(0,s8.Length);  

foreach(charcinarr)  

{  

   System.Console.Write(c);//outputs"Hello,World"

}

示例:修改字符串內容

字符串是不可變的,所以不能修改字符串的內容。可是,能夠將字符串的內容提取到非不可變的窗體中,並對其進行修改,以造成新的字符串實例。

下面的示例使用ToCharArray方法來將字符串的內容提取到char類型的數組中。而後修改此數組中的某些元素。以後,使用char數組建立新的字符串實例。

classModifyStrings  

{  

   staticvoidMain()  

   {

      stringstr="Thequickbrownfoxjumpedoverthefence";  

      System.Console.WriteLine(str);

     char[]chars=str.ToCharArray();  

      intanimalIndex=str.IndexOf("fox");  

     if(animalIndex!=-1)  

      {

          chars[animalIndex++]='c';  

          chars[animalIndex++]='a';  

          chars[animalIndex]='t';  

       }  

       stringstr2=newstring(chars);  

       System.Console.WriteLine(str2);  

    }  

}

輸出:

Thequickbrownfoxjumpedoverthefence

Thequickbrowncatjumpedoverthefence


9、利用索引訪問字符串中的各個字符

格式:str[intindex]

示例:逆序排列字符串

String s9="Printingbackwards";

for(int i=0;i< s9. Length;i++)

{  

   System.Console.Write(s9[s9.Length-i-1]);//outputs"sdrawkcabgnitnirP"

}



10、更改大小寫,ToUpper()和ToLower()

若要將字符串中的字母更改成大寫或小寫,可使用ToUpper()或ToLower()。以下所示:

1.strings10="BattleofHastings,1066";  
2.System.Console.WriteLine(s10.ToUpper());//outputs"BATTLEOFHASTINGS1066" 
3.System.Console.WriteLine(s10.ToLower());//outputs"battleofhastings1066"



11、比較

比較兩個字符串的最簡單方法是使用==和!=運算符,執行區分大小寫的比較。

stringcolor1="red";  

stringcolor2="green";  

stringcolor3="red";  

if(color1==color3)  

{  

   System.Console.WriteLine("Equal");  

}  

if(color1!=color2)  

{  

   System.Console.WriteLine("Notequal");  

}

12、CompareTo()

字符串對象也有一個CompareTo()方法,它根據某個字符串是否小於(<)或大於(>)另外一個,返回一個整數值。比較字符串時使用Unicode值,小寫的值小於大寫的值。

示例:

strings121="ABC";  

strings122="abc";  

if(s121.CompareTo(s122)>0)  

{  

   System.Console.WriteLine("Greater-than");  

}  

else

{  

   System.Console.WriteLine("Less-than");  

}


13、字符串索引

若要在一個字符串中搜索另外一個字符串,可使用IndexOf()。若是未找到搜索字符串,IndexOf()返回-1;不然,返回它出現的第一個位置的索引(從零開始)。

示例:

1.strings13="BattleofHastings,1066";  
2.System.Console.WriteLine(s13.IndexOf("Hastings"));//outputs10 
3.System.Console.WriteLine(s13.IndexOf("1967"));//outputs-1

string類型(它是System.String類的別名)爲搜索字符串的內容提供了許多有用的方法。下面的示例使用IndexOf、LastIndexOf、StartsWith和EndsWith方法。

示例:

classStringSearch  

{  

   staticvoidMain()  

   {  

       String str="Asillysentenceusedforsillypurposes.";

       System.Console.WriteLine("'{0}'",str);  

       Bool test1=str.StartsWith("asilly");

       System.Console.WriteLine("startswith'asilly'?{0}",test1);  

       bool test2=str.StartsWith("asilly",System.StringComparison.OrdinalIgnoreCase);

       System.Console.WriteLine("startswith'asilly'?{0}(ignoringcase)",test2);  

       Bool test3=str.EndsWith(".");  

       System.Console.WriteLine("endswith'.'?{0}",test3);  

       Int first=str.IndexOf("silly");  

       Int last=str.LastIndexOf("silly");  

       String str2=str.Substring(first,last-first);

       System.Console.WriteLine("betweentwo'silly'words:'{0}'",str2);  

   }  

}  

輸出:

'Asillysentenceusedforsillypurposes.'

startswith'asilly'?False

startswith'asilly'?True(ignorecase)

endswith'.'?True

betweentwo'silly'words:'sillysentenceusedfor'


3、使用StringBuilder

StringBuilder類建立了一個字符串緩衝區,用於在程序執行大量字符串操做時提供更好的性能。StringBuilder字符串還容許您從新分配個別字符,這些字符是內置字符串數據類型所不支持的。例如,此代碼在不建立新字符串的狀況下更改了一個字符串的內容:

示例:

1.System.Text.StringBuildersb=newSystem.Text.StringBuilder("Rat:theidealpet");  
2.sb[0]='C';  
3.System.Console.WriteLine(sb.ToString());//displaysCat:theidealpet 
4.System.Console.ReadLine(); 

在如下示例中,StringBuilder對象用於從一組數值類型中建立字符串。

示例:

classTestStringBuilder  

{  

   staticvoidMain()  

   {  

       System.Text.StringBuildersb=newSystem.Text.StringBuilder();

       //Createastringcomposedofnumbers0-9


      for(inti=0;i<10;i++)  

        {  

            sb.Append(i.ToString());

         }  

       System.Console.WriteLine(sb);//displays0123456789

       //Copyonecharacterofthestring(notpossiblewithaSystem.String)

       sb[0]=sb[9];  

       System.Console.WriteLine(sb);//displays9123456789

   }  

}

本內容參考了網絡的博客,但願能幫助你們。

相關文章
相關標籤/搜索