1 / 60

字 串

字 串. C# 關於字串處理有 String 類別及 StringBuilder 類別 , String 類別的使用 較為靈活簡單但不能修改其內容 ; StringBuilder 的功能較多 , 且還能修改字串的內容 , 但其使用程序較複雜。所以對於簡單的應用 , 能使用 String 類別解決 , 就用 String 類別即可 , 以下將分別介紹這兩種類別。. 1 0 -1 String 類別. 1 0 - 3 綜合範例. 1 0 -2 StringBuilder 類別. 1 0 -1 String 類別

webb
Download Presentation

字 串

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 字 串 C# 關於字串處理有 String 類別及 StringBuilder 類別, String 類別的使用 較為靈活簡單但不能修改其內容; StringBuilder 的功能較多, 且還能修改字串的內容, 但其使用程序較複雜。所以對於簡單的應用, 能使用 String 類別解決, 就用 String 類別即可, 以下將分別介紹這兩種類別。 1 0 -1 String 類別 1 0 - 3 綜合範例 1 0 -2 StringBuilder 類別

  2. 1 0 -1 String 類別 在本章之前, 字串的使用與基本資料型別的 int、float 及 bool 等均相 同。例如, 以下敘述是宣告並初始化變數 str 的初值為"abc"。 上式的效果等效於 此即為本節所要說明的 String 類別。其次, 在C# 中, string 代表 String類別的別名, 所以以下敘述的效果都相同。

  3. 建構子 String 類別的建構子共有 8 種多載, 本書並不一一介紹, 僅介紹以下String (char[]) 建構子, 其餘的內容讀者可自行查閱線上說明。 String (char[]) 此建構子需傳入一個字元型別的陣列作為初使化 String 物件的值。 例如, 以下敘述可建立一個 str 物件, 其初值為"abc"。 其次, 因為 String 類別的使用非常普及, C#為了減輕使用者的負擔, 以上敘述亦可簡化如下: 或

  4. 實例屬性 String 類別的常用實例屬性如下: Length 取得字串的長度, 例如, 結果是 5。 中文字的長度亦是每個字的長度為 1 。例如, 的結果是 3。

  5. 靜態方法 String 的常用靜態方法如下: Compare 比較兩個字串物件, 共有 6 種多載, 以下僅介紹兩種常用的多載, 分別說明如下: public static int Compare (string, string); 此方法的語法如下:

  6. 比較 strA 與 strB 兩物件, 並傳回一整數, 其意義如下: 物件的比較是依據 Unicode 先後順序, 排在後面的代表其值比較大,例如, 且逐一字元比較, 若前面的字元已能比較其大小, 則忽略後面字元的比較, 並直接傳回結果。例如,

  7. 中文的比較則逐字以其筆畫數目為比較大小的依據。例如,中文的比較則逐字以其筆畫數目為比較大小的依據。例如, 又例如, 以下敘述的結果都是 -1 。

  8. public static int Compare (string, string, bool); 其語法如下: 比較 strA 與 strB 兩字串物件, 並可設定忽略或分辨其大小寫, 其傳回值與上述多載的意義相同。例如, 以下敘述可比較 s2、s3 兩字串, 並忽略其大小寫。 結果是 0。

  9. Concat 傳回字串連結的結果, 共有 8 種多載, 在此僅介紹 3 種多載如下: 例如, 以下敘述可傳回兩個字串連結的結果。 結果是 abcdeabcxy 。

  10. Copy 字串的複製, 其語法如下: 例如, 以下敘述可複製字串變數 s3 的值, 然後指定給字串變數 s4 。 結果是 ABCXY 。

  11. 實例方法 CompareTo 將這個執行個體與指定字串物件作比較, 其語法如下: 比較後會傳回一整數值, 其意義如下: 例如, 以下敘述可比較 s1 與 s2 兩字串物件。 結果是-1 。

  12. copyTo 將指定數目的字元, 從這個執行個體的指定位置, 複製到指定字元陣列的指定位置, 且取代原字元。其語法如下: 例如, 以下敘述可將 s1 的索引 1 起複製 3 個字元至 b 字元陣列的索引2, 且取代原字元。。 結果是 01bcd56 。

  13. Equals 判斷兩個字串是否相等。其語法如下: 例如, 以下敘述可判斷 s1 與 s2 是否相等。 結果是 False 。

  14. IndexOf 根據指定字元或字串, 找出此執行個體中第一個符合項目的索引值, 共 有 6 種多載, 在此僅介紹 2 種常用的多載, 分別說明如下: public int IndexOf(char); 根據指定字元, 找出此執行個體中第一個符合該字元的索引位置, 如果 沒有找到, 則傳回-1 。例如, 以下敘述可找出字元'C' 在 s5 中的第一 個索引位置。 結果是 2 (索引值由 0 開始)。

  15. public int IndexOf(string); 根據指定字串, 找出此執行個體中第一個符合該字串的索引位置, 如果 沒有找到, 則傳回-1 。例如, 以下敘述可找出字串"ce"在 s5 中的第一 個索引位置。 結果是 3。

  16. Insert 將指定字串插入此執行個體的指定索引位置, 然後傳回一個新的 String執行個體, 原有執行個體的值並未被改變, 其語法如下: 例如, 以下敘述將字串"gh"插入至 s1 的第 5 個索引位置, 然後傳回一個新的 String 執行個體, 其值為"abcdegh", 而原有 s1 的值仍為"abcde"。

  17. LastIndexOf 根據指定字元或字串, 找出此執行個體中最後一個符合項目的索引值,共有 6 種多載, 在此僅介紹 2 種常用的多載, 分別說明如下: public int LastIndexOf(char); 根據指定字元找出此執行個體中最後一個符合該字元的索引位置, 如果沒有找到則傳回-1 。例如, 以下敘述可找出字元'c'在 s5 中的最後一個索引位置。 結果是 3。

  18. public int LastIndexOf(string); 根據指定字串, 找出此執行個體最後一個符合該字串的索引位置, 如果 沒有找到, 則傳回-1 。例如, 以下敘述可找出字串"ss"在 s5 物件中的 最後一個索引位置。 結果是 5。

  19. Remove 將指定數目的字元由此執行個體指定起始位置刪除, 然後傳回一新的String 執行個體, 原有執行個體的值並未被改變, 其語法如下: 例如, 以下敘述從 s1 的第一個字元位置起刪除 3 個字元, 其傳回值為"de", 但原有 s1 的值仍為"abcde"。

  20. Replace 以指定字元或字串, 取代此執行個體中符合該字元或字串的所有項目, 其傳回值為一更改後的新字串, 原有執行個體中的值並未改變。共有 2 種多載, 分別說明如下: public string Replace(char, char); 其語法如下: 以 newChar 取代此執行個體中符合 oldChar 的所有字元。例如, 以下敘述將以一新字元'x' 取代 s5 執行個體中的舊字元'c', 其傳回值為 "suxxess", 而原有 s5 的值仍為"success"。

  21. public string Replace(string, string); 其語法如下: 以字串 newValue 取代此執行個體中符合 oldValue 的所有字串。例如,以下敘述將以新字串"eed"取代 s5 執行個體中的舊字串"ess", 其傳回值為"succeed", 而原有 s5 的值仍為"success"。

  22. Substring 由執行個體中擷取子字串。共有 2 種多載, 分別說明如下: public string Substring(int); 其語法如下: 從指定索引位置開始擷取子字串, 一直擷取到最後一個字元的索引位置。例如, 以下敘述可從 s1 的第 3 個字元位置 (索引值2) 開始擷取子字串。 結果是 cde 。

  23. public string Substring(int, int); 其語法如下: 從指定索引位置開始擷取指定長度的子字串。例如, 以下敘述可從 s1的第 3 個字元位置 (索引值 2) 開始擷取長度為 2 的子字串。 結果是 cd 。

  24. ToCharArray 將此執行個體的字元複製到一字元陣列中, 其語法如下: 例如, 以下敘述可將 s1 的所有字元複製到 c 字元陣列中。 結果是 ac。

  25. ToLower 將此執行個體的字串內容改為小寫, 然後傳回一新的字串, 原本執行個體的字串內容並未改變。共有 2 種多載, 以下僅介紹最常用的一種多載。 例如, 以下敘述可將 s3 物件的字串內容改為小寫, 然後傳回一個新的 字串, 其值為"abcxy", 但原本 s3 物件的字串內容並未改變。

  26. ToUpper 將此執行個體的字串內容改為大寫, 然後傳回一新的字串, 原本執行個體的字串內容並未改變。共有 2 種多載, 以下僅介紹最常用的一種多載。 例如以下敘述可將 s1 的字串內容改為大寫, 然後傳回一個新的字串,其值為"ABCDE", 但原本 s1 的字串內容並未改變。

  27. Trim 將字串兩端的空白字元移除。其語法如下: 例如, 以下敘述可將 s6 字串內容兩端空白字元移除, 並傳回一新的字串。 結果是 abcde 。

  28. Spilt Spilt 方法可用來切割字串, 共有 6 種多載如下:

  29. 本書僅介紹一種多載如下: 以上多載的語法如下: 也就是將指定字串, 以 char[] 陣列的元素進行切割, 並將結果以字串陣列傳回。例如, 待切割字串 s7 如下: 欲以空白作為分割依據, 所以設定 c1 字元陣列如下:

  30. 執行 Split 方法如下: s8 字串輸出敘述如下: 則結果如下:

  31. 現若將切割依據增加點 (.) ,則其敘述如下: 重新執行 Split 方法如下: 輸出敘述如下: 則其結果如下: 點 (.) 已經消失。

  32. 1 0 -2 StringBuilder 類別 前面的 String 類別的物件一經建立, 就無法修改其內容, 但是本單元 的 StringBuilder 是一個進階的字串處理類別, 此類別的物件, 可以修改其內容。此外 StringBuilder 類別屬於 System.Text 命名空間, 所以在程式開頭記得要宣告如下: 程式才能順利執行。

  33. 建構子 StringBuilder 類別的建構子共有 6 種多載, 在此僅介紹 3 種常用的多載,分別說明如下: public StringBuilder(); 此建構子不需要傳遞任何參數, 並將物件內容初始化為空字串, 且其預設的容量 (capacity) 是 16。例如, 以下敘述可建立一個 s 物件, 其內容為空字串, 其容量是 16 。

  34. public StringBuilder(int); 此建構子需要傳遞一個 int 型別的參數來指定 StringBuilder 類別物件的容量。例如, 以下敘述可建立一個 s1 物件, 其容量是 10 。 public StringBuilder(string); 此建構子需要傳遞一個 String 型別的參數來指定 StringBuilder 類別物件的初始值。例如, 以下敘述可建立一個 StringBuilder 類別的 s2 物件, 此物件的內容是"abc" 。

  35. 實例屬性 Capacity 取得或設定目前執行個體可包含最大字元數的記憶體空間。例如, 以下敘述可取 s1 物件的目前容量; 並將其容量設定為 20 。此外, 需注意在設定容量大小時, 不得小於目前字串的長度。

  36. Length 取得或設定此執行個體的字串長度。例如, 以下敘述可取得 s2 物件的長度。 結果是 3。 此外, 在設定長度時, 若指定長度小於目前長度, 則此執行個體將被截斷為指定長度。例如, 以下敘述將 s2 的長度設定為 2, 則原本長度為 3 的 s2物件, 其最後一個字元'c' 將被截掉。 結果是 ab 。

  37. 實例方法 Append 將指定字元或字串加到原字串尾端。共有 19 種多載, 以下僅介紹 2 種常用的多載, 分別說明如下: public StringBuilder Append(char); 將指定字元加到原字串的尾端。例如, 以下敘述可將字元'd'加到 s3 物 件的尾端。 結果是 abcd 。

  38. public StringBuilder Append(string); 將指定字串加到原字串的尾端。例如, 以下敘述可將 s4 物件的字串內 容加到 s3 物件的尾端。 結果是 abcdxyz 。

  39. Equals 判斷兩 StringBuilder 類別物件是否相等。其語法如下: 例如, 以下敘述可判斷 s4 與 s5 兩 StringBuilder 物件是否相等 結果是 True 。

  40. Insert 將指定字串插入此執行個體的指定字元位置, 共有 18 種多載, 可插入不同型別的字串值, 以下僅介紹其中一種多載, 其語法如下: 例如, 以下敘述可將字串"abc"插入 s5 的第 0 個索引位置。 結果是 abcxyz 。

  41. Remove 將指定數目的字元, 由此執行個體的指定起始位置刪除。其語法如下: 例如, 以下敘述從 s5 的第一個字元位置起刪除 3 個字元。 結果是 xyz。

  42. Replace 以指定字元或字串, 取代此執行個體中符合該字元或字串的所有項目,共有 4 種多載, 在此僅介紹 2 種常用的多載, 分別說明如下: public StringBuilder Replace(char, char); 其語法如下: 以 newChar 取代此執行個體中符合 oldChar 的所有字元。例如, 以下敘述將以一新字元'a' 取代 s5 執行個體中的舊字元'x' 。 結果是 ayz。

  43. public StringBuilder Replace(string, string); 其語法如下: 以字串 newValue 取代此執行個體中符合 oldValue 的所有字串。例如,以下敘述將以新字串"eed"取代 s6 執行個體中的舊字串"ess" 。 結果是 succeed 。

  44. ToString 將 StringBuilder 類別的執行個體轉換成 String 類別, 然後傳回一個 String類別的字串, 原本執行個體的型別並未改變。其語法如下: 例如, 以下敘述可將 s6 的內容轉為 String 類別, 然後傳回一 String 類別的字串, 並指定給 String 類別的物件 s7, 原本 s6 的型別仍為 StringBuilder。

  45. 1 0 - 3 綜合範例 範例 10-3a 有一種遊戲為幾 A 幾 B 的猜數字遊戲, 兩個人對玩, 互相猜對方預先 寫下的四位數 (四位數中的阿拉伯數字不可重覆), 若所猜的數字與對方位 置相同者為 A, 數字相同, 位置不對, 則稱為 B 。例如對方預寫的數字為 6713, 若猜 6731 則應回應 2A2B, 若猜 7851 則回應 0A2B。試寫一程式, 電 腦自動產生四位數的亂數, 再讓使用者猜的一種遊戲程式。(電腦應逐一回 應使用者已猜的狀況) 設計步驟 1. 表單配置如下圖: (1) 使用一個 Label 元件, 其 name 為 1b1Out, 用於輸出電腦所回應的 AB 數目。

  46. (2) 使用一個 TextBox 元件, 其 name 為 txtIn, 用於輸入使用者所臆測的數字。

  47. 2. 程式執行時, 電腦產生四位數的亂數, 所以程式撰寫如下:

  48. 3. 當使用者鍵入數字時, 電腦應回應 AB 數, 所以程式撰寫如下, 其中變數 d 於 class Form1 中宣告, 所以可流通於各事件。

  49. 執行結果 1. 下圖左為程式執行的初始畫面, 電腦已產生四位數的亂數 7514, 如下圖左。(要實際玩此遊戲時, 當然不能印出此數字) 2. 下圖右為使用者臆測 4208, 電腦回應 0A1B 的畫面。

More Related