System.String是一個功能非常強大且用途非常廣泛的基類,但它不是.NET中唯一與字符串相關的類,特別是System.Text和System.Text.RegularExpressions命名空間中的類。本文主要介紹內容: 1、創建字符串 2、格式化表達式 3、正則表達式
一、System.String類 System.String是一個類,專門用於存儲字符串,允許對字符串進行許多操作。 例如:




C#還允許類似於索引符的語法來提取指定的字符:

1.1 創建字符串
string類的功能非常強大,但是它存在一個問題:重復修改給定的字符串,效率很低。它實際上是一個不可變的數據類型,一旦對字符串進行了初始化,該字符串就不能改變了。修改該字符串的內容時,實際上是創建一個新的字符串,如果有必要,可以把舊的字符串內容復制到新字符串中。 例如:


在執行這段代碼時,首先創建一個String對象greetingText,並初始化為文本"Hello. "(最后是一個空格)。此時.NET運行庫為該字符串分配足夠的內存在保存初始文本(7個字符),再設置變量greetingText,表示這個字符串實例。從表面上看,執行下一句代碼,是把新的文本直接添加到初始文本的后面,但實際並非如此執行的。而是另外創建一個新的字符串實例,給他分配足夠的內存,以保存合並起來的文本,然后更新存儲再變量greetingText中的地址,使變量指向新的字符串對象。舊的字符串對象被撤銷了引用——不再有變量引用它,下一次垃圾收集器清理應用程序中所有未使用的對象時,就會刪除它。
當字符串的長度很大的時候,這樣做顯然影響了執行效率,所以C#中用System.Text.StringBuilder類來處理較長的字符串。StringBuilder類功能沒有String類強大,功能僅限於替換和添加或刪除字符串中的文本,但是工作方式非常高效。 用StringBuilder類創建字符串:





StringBuiler類有兩個主要屬性: Length指定字符串的實際長度 Capacity是字符串占據存儲單元的長度 StringBuilder類的主要方法: Append()方法,在字符串尾部添加新的文本 Replace()方法,替換文本
注意:不能把StringBuilder轉換為String,如果要把StringBuilder的內容輸出為String,唯一的方式是使用ToString()方法。
1.2 格式化字符串



{}中的0、1等分別對應后面的d和i,10:E是格式,表示占10個字符,如果數字是正數,結果向右對齊,如果是負數則左對齊。E表示科學計數法。
格式符 | 應用 | 含義 | 示例 |
C | 數字類型 | 專用場合的貨幣值 | $4834.50(USA) |
D | 只用於整數類型 | 一般的整數 | 4834 |
E | 數字類型 | 科學計數法 | 4.834E+003 |
F | 數字類型 | 小數點后的位數固定 | 4834.50 |
G | 數字類型 | 一般的數字 | 4834.5 |
N |
數字類型 | 通常是專用場合的數字格式 | 4,834.50 |
P | 數字類型 | 百分比計數法 | 432,000.00% |
X | 只用於整數類型 | 16進制格式 | 1120(如果需要顯示0x1120,需要寫上0x) |
二、正則表達式
2.1 正則表達式概述
正則表達式語言是一種專門用於字符串處理的語言,使用正則表達式可以對字符串執行許多復雜而高級的操作,例如:區分URI的各個元素(例如:http://www.sina.com.cn,提取協議、計算機名、文件名等)。 在C#中只需要用System.Text.RegularExpressions類的RegEx()方法或者調用靜態方法RegEx(),給它們傳遞要處理的字符串和一個正則表達式,就可以完成我們所需要的操作,得到預期的結果了。 下面列出正則表達式常用字符表
符號 | 含義 | 示例 | 匹配示例 |
^ | 輸入文本的開頭 | ^B | B,但只能是文本中的第一個字符 |
$ | 輸入文本的結尾 | X$ | X,但只能是文本的最后一個字符 |
. | 除了換行符(\n)以外的所有單個字符 | i.ation | isation、ization |
* | 可以重復0次或者多次的前導字符 | ra*t | rt、rat、raat、raaat等 |
+ | 可以重復1次或者多次的前導字符 | ra+t | rat、raat和raaat等(不包含rt) |
? | 可以重復0次或者1次的前導字符 | ra?t | rt或者rat |
\s | 任何空白字符 | \sa | [space]a、\ta、\na等 |
\S | 任何不是空白的字符 | \SF | aF、rF、cF等,但不能是\tF |
\b | 字邊界 | ion\b | 以ion結尾的任何字 |
\B | 是不是字邊界的位置 | \BX\B | 字中間的任何X |
如果搜索一個元字符,可以用.(一個句點)表示所有除了\n以外的字符,而\.表示一個點。 可以把要替換的字符放到括號中:[1|C]表示字符可以是1或者C,如果要搜索map或者man,可以用ma[n|p]。 方括號也可以表示范圍:[a-z]表示a到z的所有小寫字母。
示例如下:


