C# 學習第8章操作字符和字符串_第1頁
C# 學習第8章操作字符和字符串_第2頁
C# 學習第8章操作字符和字符串_第3頁
C# 學習第8章操作字符和字符串_第4頁
C# 學習第8章操作字符和字符串_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第8 8章章 操作字符和字符串操作字符和字符串C#對于文字的處理大多是通過對字符和字符串的操作對于文字的處理大多是通過對字符和字符串的操作來進行的,同時還為開發人員提供了功能強大的函數。雖然來進行的,同時還為開發人員提供了功能強大的函數。雖然前面滴前面滴3章已經介紹過字符,但是字符和字符串是非常重要章已經介紹過字符,但是字符和字符串是非常重要的變量類型。本章將深入介紹字符和字符串的變量類型。本章將深入介紹字符和字符串,希望讀者能熟希望讀者能熟練掌握這些內容。練掌握這些內容。這一章的主要內容如下:這一章的主要內容如下:字符串的操作字符串的操作可變字符串可變字符串字符集編碼字符集編碼字符集之間的

2、轉換字符集之間的轉換8.1 8.1 字符字符字符字符Char表示一個表示一個Unicode字符,可以構成字符串。字符,可以構成字符串。下面接著第下面接著第2章的內容來詳細介紹字符。章的內容來詳細介紹字符。8.1.1 Char8.1.1 Char的使用的使用Char為開發人員提供了許多實用的方法,為了讓讀者為開發人員提供了許多實用的方法,為了讓讀者對其有個大概的了解。對其有個大概的了解。8.1.2 8.1.2 字符的比較字符的比較字符同數值一樣,是可以進行大小比較的。它們大小字符同數值一樣,是可以進行大小比較的。它們大小關系是根據關系是根據ASCII表定義的。有興趣的讀者可以查閱相關資表定義的。

3、有興趣的讀者可以查閱相關資料。料。8.2 8.2 字符串字符串在在.NET中,關鍵字中,關鍵字string實際映射為實際映射為System.String類,類,是一個非常強大、用途非常廣泛的基類。字符串一旦創建將不是一個非常強大、用途非常廣泛的基類。字符串一旦創建將不可改變,下面將逐一講述字符串的內容。可改變,下面將逐一講述字符串的內容。8.2.1 8.2.1 字符串基本概念字符串基本概念字符串是字符串是Unicode字符的有序集合,用于表示文本,該字符的有序集合,用于表示文本,該類型變量可以看作是類型變量可以看作是char變量的只讀數組。在前面的章節中變量的只讀數組。在前面的章節中,最常見的

4、代碼語句如下,其中,最常見的代碼語句如下,其中“Hello C#”就是一個字符就是一個字符串。串。Console.WriteLine(“Hello C#”);1定義字符串定義字符串2字符串的轉義字符字符串的轉義字符“”8.2.2 8.2.2 字符串的查找字符串的查找在在.NET類中提供了查找字符串中字符的方法,其采用順序類中提供了查找字符串中字符的方法,其采用順序比較的辦法在字符串中查找相應的字符。比較的辦法在字符串中查找相應的字符。方法說明Indexof報告String或一個或多個字符在此字符在此字符串中的第一個匹配項的索引IndexofAny報告指定Unicode字符數組中的任意字符在此實

5、例中第一個匹配項的索引LastIndexOf報告指定Unicode字符或String在此實例中的最后一個匹配項的索引LastIndexOfAny報告指定Unicode字符數組中指定的一個或多個字符在此實例中的最后一個匹配項的索引位置8.2.3 8.2.3 字符串的比較字符串的比較在在.NET類中提供了字符串比較的方法,通常字符串的比類中提供了字符串比較的方法,通常字符串的比較是通過較是通過String.Compare方法來進行的。方法來進行的。返回值條件小于零strA小于strB零strA等于strB大于零strA大于strB8.2.4 8.2.4 字符串的插入字符串的插入在在.NET類中提供

6、了字符串插入的方法,其比較簡單,類中提供了字符串插入的方法,其比較簡單,只有一種形式定義格式如下:只有一種形式定義格式如下:Public string Insert(int startIndex, string str)在上述定義中,在上述定義中,startIndex是要插入的索引位置,參數是要插入的索引位置,參數str是要插入的是要插入的String,返回值為在索引,返回值為在索引startIndex處插入處插入str的一個新的的一個新的String。如果。如果str是一個空引用、是一個空引用、startIndex是一個負數、是一個負數、startIndex大于調用大于調用String的長度

7、,將會拋出的長度,將會拋出一個異常。一個異常。8.2.5 8.2.5 字符串的刪除字符串的刪除在在.NET類中提供了字符串刪除的方法,通常字符串的類中提供了字符串刪除的方法,通常字符串的比較是通過比較是通過String.Remove方法來進行的。方法來進行的。8.2.6 8.2.6 子字符串的獲得子字符串的獲得在在.NET類中提供了子字符串獲得的方法,通常子字符串的類中提供了子字符串獲得的方法,通常子字符串的獲得通過獲得通過String.SubString方法來進行。方法來進行。方法說明String.SubString(Int32)子字符串從指定的字符位置開始String.SubString(

8、Int 32,Int 32)子字符串從指定的字符位置開始并且具有指定的長度。8.2.7 8.2.7 字符串的替換字符串的替換在在.NET類中提供了字符串替換的方法,通常子字符串的類中提供了字符串替換的方法,通常子字符串的獲得要通過獲得要通過String.Replace方法來進行。方法來進行。方法說明String.Replace(Char,Char)將此實例中指定的Unicode字符的所有匹配項替換為其他指定的Unicode字符String.Replace(String,String)將字符串中指定的String的所有匹配項替換為其他指定的String8.2.8 8.2.8 字符串的其他方法字符

9、串的其他方法在在.NET類中還提供了許多其他操作字符串的方法。類中還提供了許多其他操作字符串的方法。PadLeft()方法通過在字符串開始的位置添加空字符或一個方法通過在字符串開始的位置添加空字符或一個重復字符使調用重復字符使調用String對象中的字符右對齊,這樣使字符串對象中的字符右對齊,這樣使字符串達到指定的長度。達到指定的長度。PadRight()通過在末尾插入字符執行左對通過在末尾插入字符執行左對齊。齊。8.2.8 8.2.8 字符串的其他方法字符串的其他方法方法說明String. PadLeft(int)將此實例開始的位置添加空字符使字符串右對齊。String.PadLeft (i

10、nt,char)將此實例開始的位置重復添加字符使字符串右對齊。String.PadRight(int)將此實例末尾的位置添加空字符使字符串左對齊。String.PadRight (int,char)將此實例末尾的位置重復添加字符使字符串左對齊。8.3 8.3 可變字符串可變字符串.NET提供了類提供了類StringBuider來表示可變字符串。類來表示可變字符串。類String在構造一個字符串時,要給它所需要的內存來保存字在構造一個字符串時,要給它所需要的內存來保存字符串,但符串,但StringBuilder通常分配的內存會比需要的更多。通常分配的內存會比需要的更多。當每次使用類當每次使用類S

11、tring中的方法時,都要在內存中創建一個新中的方法時,都要在內存中創建一個新的字符串對象,這就需要為該新對象分配新的空間,如果需的字符串對象,這就需要為該新對象分配新的空間,如果需要重復使用多次,那么創建新要重復使用多次,那么創建新String對象的相關系統開銷可對象的相關系統開銷可能會非常昂貴。如果修改字符串而不創建新的對象,則可以能會非常昂貴。如果修改字符串而不創建新的對象,則可以使用類使用類StringBuider。雖然類。雖然類StringBuider是可變的,但其是可變的,但其方法屬性等卻不如類方法屬性等卻不如類String充分。充分。8.3.1 StringBuilder8.3.

12、1 StringBuilder的簡單介紹的簡單介紹定義一個類定義一個類StringBuider的變量非常簡單,跟其他類的變量非常簡單,跟其他類的使用方法一樣,例如:的使用方法一樣,例如:StringBuider myStringBuider = new StringBuider();該類的構造函數有很多,讀者可以根據自己的需要選該類的構造函數有很多,讀者可以根據自己的需要選擇合適的構造函數。擇合適的構造函數。8.3.1 StringBuilder8.3.1 StringBuilder的簡單介紹的簡單介紹函數說明StringBuider()初始化StringBuider類的新實例。StringB

13、uider(Int32)用指定的容量初始化StringBuider類的新實例。StringBuider(String)用指定的子字符串初始化StringBuider類的新實例。StringBuider(Int32,Int32)初始化StringBuider類的新實例,該類起始于指定容量并且可增長到指定的最大容量。StringBuider(String,Int32)用指定的子字符串和容量初始化StringBuider類的新實例。StringBuider(String,Int32,Int32,Int32)用指定的子字符串和容量初始化StringBuider類的新實例。8.3.2 StringBui

14、der8.3.2 StringBuider類實現字符串元素添加輸出類實現字符串元素添加輸出StringBuider的常用屬性:的常用屬性:屬性說明Capacity獲取或設置可包含在當前實例所分配的內存中最大字符數。Chars獲取或設置此實例中指定字符位置處的字符。Length獲取或設置此實例的長度。MaxCapacity該實例的最大容量。8.4 8.4 理解編碼理解編碼隨著計算機在各個國家的應用和普及,許多國家都把本隨著計算機在各個國家的應用和普及,許多國家都把本地的字符集引入了計算機,這樣就存在了許多種編碼方式。地的字符集引入了計算機,這樣就存在了許多種編碼方式。對于開發人員來講,如果不了解

15、編碼的原理,在自己編寫的對于開發人員來講,如果不了解編碼的原理,在自己編寫的應用軟件中,就會出現亂碼。應用軟件中,就會出現亂碼。8.4.1 8.4.1 字符集的編碼問題字符集的編碼問題計算機的最初使用是在美國,當時所使用的字符就是現計算機的最初使用是在美國,當時所使用的字符就是現在能在鍵盤上的一些符號和少數的幾個特殊符號,每一個字在能在鍵盤上的一些符號和少數的幾個特殊符號,每一個字符都用一個數字來表示,一個字節所能表示的數字范圍足以符都用一個數字來表示,一個字節所能表示的數字范圍足以容納所有的這些字符。可實際上表示這些字符數字字節的最容納所有的這些字符。可實際上表示這些字符數字字節的最高位都是

16、高位都是0,即這些數字都在,即這些數字都在0到到127之間。例如字符之間。例如字符a對應數對應數字字97等,這套編碼規則被稱為等,這套編碼規則被稱為ASCII。當把中國的本地字符集引入計算機時,一個字節所能表當把中國的本地字符集引入計算機時,一個字節所能表示的數字范圍就不能容納所有的中文漢字,于是中國大陸把示的數字范圍就不能容納所有的中文漢字,于是中國大陸把每一個中文字符用兩個字節的數字來表示,原有的每一個中文字符用兩個字節的數字來表示,原有的ASCII字字符編碼保持不變,仍用一個字節來表示,為了將一個中文字符編碼保持不變,仍用一個字節來表示,為了將一個中文字符與兩個符與兩個ASCII碼字符相

17、區別,中文字符每個字節的最高位碼字符相區別,中文字符每個字節的最高位都為都為1,這套編碼規則就稱為,這套編碼規則就稱為GBK。后來又在。后來又在GBK的基礎上的基礎上對更多的中文字符(繁體字)進行了編碼,新的編碼系統就對更多的中文字符(繁體字)進行了編碼,新的編碼系統就是是GB2312。8.4.2 C#8.4.2 C#對字符集的支持對字符集的支持文本是應用程序與用戶交互的主要方式,文本用來向文本是應用程序與用戶交互的主要方式,文本用來向用戶顯示輸出,查詢輸入和向用戶提供其他有價值的信息。用戶顯示輸出,查詢輸入和向用戶提供其他有價值的信息。C#中,中,System.Text命名空間中包含了代表命

18、名空間中包含了代表ASCII、UTF-7和和UTF-8方案的類,如圖方案的類,如圖8.1所示。這些類主要用于字符數所示。這些類主要用于字符數組和字節數組之間的相互轉換。組和字節數組之間的相互轉換。當各種編碼方案類型不一致時,要考慮兼容的問題,當各種編碼方案類型不一致時,要考慮兼容的問題,這一點很重要。例如,用這一點很重要。例如,用Unicode編碼方案寫入的數據不能編碼方案寫入的數據不能使用使用ASCII、UTF-7和和UTF-8編碼方案正確的解碼。因為編碼方案正確的解碼。因為Unicode編碼方案使用兩個字節表示每個字符,而其他方案編碼方案使用兩個字節表示每個字符,而其他方案不是這樣。但是用

19、不是這樣。但是用ASCII、UTF-7和和UTF-8編碼方案在讀寫編碼方案在讀寫ASCII數據時是兼容的。當出現不兼容的時候,不會拋出異數據時是兼容的。當出現不兼容的時候,不會拋出異常,但會出現亂碼。常,但會出現亂碼。8.4.2 C#8.4.2 C#對字符集的支持對字符集的支持8.4.3 ASCIIEncoding8.4.3 ASCIIEncoding類實現轉換類實現轉換ASCIIEncoding類提供了使用類提供了使用ASCII字符編碼方案的功字符編碼方案的功能,定義了把字符串或字符數組轉換為字節和把字節數組解能,定義了把字符串或字符數組轉換為字節和把字節數組解碼轉換為字符序列的方法。在該方

20、案中,碼轉換為字符序列的方法。在該方案中,Unicode字符被編字符被編碼為碼為7位的位的ASCII字符。字符。ASCII字符值的范圍從字符值的范圍從u0000到到u007F,該范圍不足以表示某些語言中使用的字符。,該范圍不足以表示某些語言中使用的字符。ASCIIEncoding類的構造函數如下:類的構造函數如下:Public ASCIIEncoding()8.4.4 UnicodeEncoding8.4.4 UnicodeEncoding類實現轉換類實現轉換UnicodeEncoding類提供了使用類提供了使用Unicode字符編碼方字符編碼方案的功能,定義了把每個案的功能,定義了把每個UT

21、F-16格式的字符編碼為兩個連格式的字符編碼為兩個連續的字節。字節順序可以是續的字節。字節順序可以是Little-endian或或Big-endian。在。在Little-endian的格式中,先讀寫最不重要的字節,在的格式中,先讀寫最不重要的字節,在Big-endian的格式中正好相反。的格式中正好相反。UnicodeEncoding類的構造函類的構造函數如下:數如下:Public UnicodeEncoding();Public UnicodeEncoding(bool bigEnding,bool byteOrderMark);8.4.5 UTF7Encoding8.4.5 UTF7En

22、coding類實現轉換類實現轉換UTF7Encoding類提供了使用類提供了使用7位的位的UCS轉換格式(轉換格式(UTF-7)編碼方案的功能,該方案支持所有的)編碼方案的功能,該方案支持所有的Unicode字符。其定字符。其定義了整型值為義了整型值為127或或127以下的字符用一個字節表示,整型值為以下的字符用一個字節表示,整型值為127以上的字符用多個字節表示。以上的字符用多個字節表示。UTF7Encoding類的構造函類的構造函數為:數為:Public UTF7Encoding();Public UT7Encoding(bool allowOptionals);8.4.6 UTF8Encoding8.4.6 UTF8Encoding類實現轉換類實現轉換UTF8Encoding類提供了使用類提供了使用8位的位的UCS轉換格式(轉換格式(UTF-8)編碼方案的功能,該方案支持所有的)編碼方案的功能,該方案支持所有的Unicode字符。字符。其定義了整型值為其定義了整型值為127或或127以下的字符用一個字節表示,整以下的字符用一個字節表示,整型值為型值為127以上的字符用兩個字節表示。以上的字符

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論