intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 7: Chuỗi và kí tự

Chia sẻ: | Ngày: | Loại File: PPT | Số trang:76

124
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thông thường người ta lưu chuỗi cung như các kiểu dữ liệu khác trong các dạng mà ta có thể tìm kiếm thông tin một cách dễ dàng. Cách tốt nhất là dùng hash table. Đây là phương thức lưu trữ thông tin bằng cách biểu diễn một phép tính đặc biệt lên đối tượng. Phép toán đó gọi là hash code.

Chủ đề:
Lưu

Nội dung Text: Chương 7: Chuỗi và kí tự

  1. Chương 7 – Chuỗi và kí tự  Outline 7.1 Giới thiệu về chuỗi và kí tự 7.2 Khởi tạo chuỗi 7.4 Chỉ số chuỗi, thuộc tính độ dài Length và phương thức CopyTo 7.5 So sánh chuỗi 7.6 Phương thức GetHashCode 7.7 Định vị kí tự và một xâu con trong chuỗi 7.8 Trích chọn xâu con từ chuỗi 7.9 Nối, ghép chuỗi 7.10 Các phương thức xử lý chuỗi khác 7.11 Lớp StringBuilder 7.12 Phương thức EnsureCapacity 7.13 Các phương thức StringBuilder Append và AppendFormat 7.14 Phương thức StringBuilder Insert, Remove và Replace 7.15 Các phương thức xử lý kí tự 7.16 Card Shuffling và Dealing Simulation 7.17 Các biểu thức và lớp Regex
  2. 7.1 Giới thiệu về chuỗi và kí tự  Chuỗi và ký tự có khả năng  Sửa đổi text  Xử lý các từ..  Mở rộng từ các chương trước  Lớp String và kiểu char  Lớp StringBuilder  Lớp Regex và Match  Tầm quan trọng của các ký tự  Hằng ký tự : là số nguyên đại diện cho ký tự đó  Mã hoá ký tự  Bảng ký tự Unicode  Chuỗi - String  Đối tượng của lớp String trong không gian tên System  Bao gồm các ký tự
  3. 7.2 Khởi tạo chuỗi  Lớp string cung cấp 8 hàm tạo chuỗi theo nhiều cách khác nhau  Ta xét ví dụ sau
  4. 1 // StringConstructor.cs 2 // Demonstrating String class constructors. 3 4 using System; StringConstructor.cs 5 using System.Windows.Forms; 6 7 // test several String class constructors 8 class StringConstructor 9 { 10 // The main entry point for the application. 11 [STAThread] 12 static void Main( string[] args ) 13 { 14 string output; Khai báo chuỗi 15 string originalString, string1, string2, 16 string3, string4; xác định mảng char 17 18 char[] characterArray = characterArray chứa 9 ký tự Gán một chuỗi chữ tham 19 { 'b', 'i', 'r', 't', 'h', ' ', 'd', 'a', 'y' }; chiếu cho chuỗi 20 String2 được gán là một nhận  Hàm khởi tạo String originalString 21 // string initialization chuỗmột mảng ký  tự làm tham  i mới 22 originalString = "Welcome to C# programming!"; 23 string1 = originalString; số  Bắt đầu chỉ số và Cho string1 tham 24 string2 = new string( characterArray ); đếm tạ ế tới cùng một 25 string3 = new string( characterArray, 6, 3 ); hàm khởichio ustring vớichuỗiký Dùng 26 string4 = new string( 'C', 5 ); tự và một sốHàm ữ đói ểạđếStringần ận nguyênở t o m số l nh ch kh đ 27 một ảng char và hai số lặp lại ký tự trongmstring 28 output = "string1 = " ArgumentOutOfRangeException + "\"" + string1 + "\"\n" + 29 "string2 = " + "\"" + string2 + "\"\n" + nguyên int làm tham số 30 "string3 = " + "\"" + string3 + nếu phần tử nằm ngoài Chuỗi ra loại bỏ "\"\n" + 31 khoảng "string4 = " + "\"" + string4 + "\"\n"; 32
  5. StringConstructor.cs 33 MessageBox.Show( output, "String Class Constructors", 34 MessageBoxButtons.OK, MessageBoxIcon.Information ); 35 36 } // end method Main 37 38 } // end class StringConstructor Hiển thị kết quả ra
  6. 7.4 Chỉ số chuỗi, thuộc tính độ dài Length và phương thức CopyTo  Chỉ số chuỗi  Chỉ số chuỗi cho phép xác định vị trí các ký tự trong chuỗi.  Thuộc tính độ dài  Trả về giá trị chiều dài của chuỗi ký tự  CopyTo  Copy một số ký tự trong chuỗi vào một mảng kiểu ký tự nào đó
  7. 1 // StringMethods.cs 2 // Using the indexer, property Length and method CopyTo 3 // of class String. 4 StringMethods.cs 5 using System; 6 using System.Windows.Forms; 7 8 // creates string objects and displays results of using 9 // indexer and methods Length and CopyTo 10 class StringMethods 11 { 12 // The main entry point for the application. 13 [STAThread] 14 static void Main( string[] args ) 15 { Khai báo String 16 string string1, output; 17 char[] characterArray; String1 để lưu chuỗi 18 19 string1 = "hello there"; chữ “hello there” 20 characterArray = new char[ 5 ]; 21 22 // output string 23 output = 24 "string1: \"" + string1 + "\""; 25 26 // test Length property 27 output += "\nLength of string1: " + string1.Length; 28 29 // loop through character in string1 and display 30 // reversed 31 output += "\nThe string reversed is: "; Nối vào kết quả ra 32 chuỗi string1 theo 33 for ( int i = string1.Length - 1; i >= 0; i-- ) 34 output += string1[ i ]; thứ tự ngược lại 35
  8. StringMethods.cs 36 // copy characters from string1 into characterArray 37 string1.CopyTo( 0, characterArray, 0, 5 ); 38 output += "\nThe character array is: "; 39 40 for ( int i = 0 ; i < characterArray.Length; i++ ) 41 Ph ỉ s ng thứắ mảng ký t ịt trí ần vào Chươố để bớitCopyto vựự cđặt copy Copy t c ChSốố đượ đầu s ký này ỉ output += characterArray[ i ]; 42 gọi b m t ng ký tự  copy ởi string1 ảừ string 43 MessageBox.Show( output, "Demonstrating the string " + 44 Nối nội dung mProperty and CopyTo method", "Indexer, Length ảng 45 46 char vào xâu string MessageBoxIcon.Information ); MessageBoxButtons.OK, 47 }output // end method Main 48 49 } // end class StringMethods
  9. 7.5 So sánh chuỗi  So sánh chuỗi  Lớn hơn  Nhỏ hơn  Phương thức Equals  Kiểm tra sự bằng nhau của các đối tượng  Trả lại giá trị logic Bool  Dùng cách so sánh từ điển
  10. 1 // StringCompare.cs 2 // Comparing strings. 3 4 using System; StringCompare.cs 5 using System.Windows.Forms; 6 7 // compare a number of strings 8 class StringCompare 9 { 10 // The main entry point for the application. 11 [STAThread] 12 static void Main( string[] args ) 13 { 14 string string1 = "hello"; 15 string string2 = "good bye"; 16 string string3 = "Happy Birthday"; 17 string string4 = "happy birthday"; 18 string output; 19 20 // output values of four strings 21 output = "string1 = \"" + string1 + "\"" + 22 "\nstring2 = \"" + string2 + "\"" + 23 "\nstring3 = \"" + string3 + "\"" + 24 "\nstring4 = \"" + string4 + "\"\n\n"; 25 Ví dụ phương thức 26 Equals // test for equality using Equals method 27 if ( string1.Equals( "hello" ) ) 28 output += "string1 equals \"hello\"\n"; 29 else 30 output += "string1 does not equal \"hello\"\n"; 31 So sánh giá trị 32 // test for equality with == ỗi Unicode trong m Toán tử bằng 33 xâu if ( string1 == "hello" ) 34 output += "string1 equals \"hello\"\n";
  11. StringCompare.cs 35 else 36 output += "string1 does not equal \"hello\"\n"; 37 38 // test for equality comparing case 39 if ( String.Equals( string3, string4 ) ) 40 output += "string3 equals string4\n"; 41 else Đưa ra lời nhắn hợp lý 42 Phương thKicdoes notbằng string4\n"; ữa string3 và ứ ểm tra equal nhau gi output += "string3 Static 43 Equals string4 44 // test CompareTo 45 output += "\nstring1.CompareTo( string2 ) is " + 46 string1.CompareTo( string2 ) + "\n" + 47 "string2.CompareTo( string1 ) is " + 48 string2.CompareTo( string1 ) + "\n" + 49 "string1.CompareTo( string1 ) is " + 50 string1.CompareTo( string1 ) + "\n" + Phương thức 51 "string3.CompareTo( string4 ) is " + CompareTo gọi tới so 52 string3.CompareTo( string4 ) + "\n" + 53 "string4.CompareTo( string3 ) is " + sánh string 54 string4.CompareTo( string3 ) + "\n\n"; 55 56 MessageBox.Show( output, "Demonstrating string " + 57 "comparisons", MessageBoxButtons.OK, 58 MessageBoxIcon.Information ); 59 60 } // end method Main 61 62 } // end class StringCompare
  12. StringCompare.cs String3 có hai ký tự viết hoa nên nó lớn hơn string4
  13. 1 // StringStartEnd.cs 2 // Demonstrating StartsWith and EndsWith methods. 3 4 using System; StringStartEnd.cs 5 using System.Windows.Forms; 6 7 // testing StartsWith and EndsWith 8 class StringStartEnd 9 { 10 // The main entry point for the application. 11 [STAThread] 12 static void Main( string[] args ) 13 { Nội dung xác định Mảng các 14 string[] strings = 15 { "started", "starting", "ended", "ending" };lúcstring ngay khai báo 16 string output = ""; 17 18 //test every string to see if it starts with "st"Phương thức Phương thức StartsWith xác StartsWith 19 for ( int i = 0; i < strings.Length; i++ ) 20 có tham số làđịnh xem một chuỗi có bắt một 21 if ( strings[ i ].StartsWith( "st" ) ) String đầu với string text truyền 22 output += "\"" + strings[ i ] + "\"" + cho nó hay không 23 " starts with \"st\"\n"; Cấu trúc If xác định 24 xem string ở chỉ số 25 output TrảNối chuỗi string[i] lệnhchuỗi tra += "\n"; i true nếu câu vào kiểm lạ 26 thấy ết quả ra k đúng i có bắt đầu với “st” 27 hay không // test every string to see if it ends with "ed" 28 for ( int i = 0; i < strings.Length; i ++ ) Phương thức EndsWith xác 29 định xem một chuỗi có kết 30 if ( strings[ i ].EndsWith( "ed" ) ) 31 output += "\"" + strings[ i ] + "\"" + Cấu trúc Ifthúc vớnh xác đị i string text truyền 32 " ends with \"ed\"\n"; xem string ở chỉ số không cho nó hay 33 i có kết thúc với "ed" hay không
  14. StringStartEnd.cs 34 MessageBox.Show( output, "Demonstrating StartsWith and " + 35 "EndsWith methods", MessageBoxButtons.OK, 36 MessageBoxIcon.Information ); 37 38 } // end method Main 39 40 } // end class StringStartEnd
  15. 7.6 Phương thức GetHashCode  Thông thường người ta lưu chuỗi cung như các kiểu dữ liệu khác trong các dạng mà ta có thể tìm kiếm thông tin một cách dễ dàng.  Cách tốt nhất là dùng hash table. Đây là phương thức lưu trữ thông tin bằng cách biểu diễn một phép tính đặc biệt lên đối tượng. Phép toán đó gọi là hash code.  Bất kỳ đối tượng nào cũng có thể được lưu trữ trong hash table.  Hash table  Thuộc lớp Object  Tạo khả năng truy cập thông tin một cách dễ dàng  Tính toán để sinh ra hash code
  16. 1 // StringHashCode.cs 2 // Demonstrating method GetHashCode of class String. 3 4 using System; StringHashCode.cs 5 using System.Windows.Forms; 6 7 // testing the GetHashCode method 8 class StringHashCode 9 { 10 // The main entry point for the application. 11 [STAThread] 12 static void Main( string[] args ) 13 { 14 15 string string1 = "hello"; xác định hai 16 string string2 = "Hello"; string 17 string output; 18 19 output = "The hash code for \"" + string1 + 20 "\" is " + string1.GetHashCode() + "\n"; Method GetHashCode được 21 gọi để tính cho xâu string1 và 22 output += "The hash code for \"" + string2 + string2 23 "\" is " + string2.GetHashCode() + "\n"; 24 25 MessageBox.Show( output, "Demonstrating String " + 26 "method GetHashCode", MessageBoxButtons.OK, 27 MessageBoxIcon.Information ); 28 29 } // end method Main 30 31 } // end class StringHashCode
  17. StringHashCode.cs Giá trị Hash code của strings “hello” và “Hello”
  18. 7.7 Định vị kí tự và một xâu con trong chuỗi  Trong nhiều ứng dụng, cần phải tìm một ký tự hay một chuỗi ký tự trong một chuỗi, một văn bản.  Ví dụ sau đây sẽ cung cấp một số phương thức trên các chuỗi  IndexOf  IndexOfAny  LastIndexOf  LastIndexOfAny
  19. 1 // StringIndexMethods.cs 2 // Using String searching methods. 3 4 using System; 5 using System.Windows.Forms; StringIndexMethods.cs 6 7 // testing indexing capabilities of strings 8 class StringIndexMethods 9 { 10 // The main entry point for the application. 11 [STAThread] 12 static void Main( string[] args ) 13 { 14 string letters = "abcdefghijklmabcdefghijklm"; 15 string output = ""; 16 char[] searchLetters = { 'c', 'a', '$' }; 17 18 // test IndexOf to locate a character in a string 19 output += "'c' is located at index " + 20 letters.IndexOf( 'c' ); 21 22 output += "\n'a' is located at index " + IndexOf có hai Method ố:ký ựự hiton thành công IndexOf th t c ệ locate first tham s IndexOf 23 letters.IndexOf( 'a', 1 ); 24 cần tìm và chỉ số ban lạầchđểố của vintrí string sẽ trả đ i of s occurrenceu ỉ substring ị a ký tự 25 output += "\n'$' is located at index " + IndexOf cần 3 tham tìm,nếtựkhông trả lại giá trị tìm kiếm cần số,ký u 26 letters.IndexOf( '$', 3, 5 ); -1 cần tìm,chỉ số ban đầu để tìm 27 28 // test LastIndexOf to find a character in a stringNhậnsố ký tự tham và ký tự là cần tìm 29 output += "\n\nLast 'c' is located at " + số tìm kiếm 30 "index " + letters.LastIndexOf( 'c' ); 31 32 output += "\nLast 'a' is located at index " + Có 2 tham số:ký tự ầu n tìm và Các đ cầ ra này 33 letters.LastIndexOf( 'a', 25 ); chỉ số cao nhất để phương thức dùng tìm ngược 34 về phía sau LastIndexOf
  20. 35 output += "\nLast '$' is located at index " + 36 letters.LastIndexOf( '$', 15, 5 ); 37 Tham số nhận các ký tự đc trong LastIndexOf tìm ngượ ể 38 // test IndexOf to locate a substring in a string ỉ sừ cuốingược đầu tiên tìm,ch t ố tìmStringIndexMethods.cs xâu lên đầu 39 output += "\n\n\"def\" is located at" + và phần xâu cần tìm 40 " index " + letters.IndexOf( "def" ); 41 42 output += "\n\"def\" is located at index " + 43 letters.IndexOf( "def", 7 ); 44 IndexOf và LastIndexOf có 45 output += "\n\"hello\" is located at index " + chức năng tương tự như 46 letters.IndexOf( "hello", 5, 15 ); LastIndexOf và IndexOf 47 48 // test LastIndexOf to find a substring in a string 49 output += "\n\nLast \"def\" is located at index " + 50 letters.LastIndexOf( "def" ); Thay vì gửi tham số ký 51 tự,hai phương thức này tìm 52 output += "\nLast \"def\" is located at " + tham số là xâu con 53 letters.LastIndexOf( "def", 25 ); 54 55 output += "\nLast \"hello\" is located at index " + 56 letters.LastIndexOf( "hello", 20, 15 ); 57 58 // test IndexOfAny to find first occurrence of character 59 // in array Method IndexOfAny Trả "ạ+ chỉ số của ký tự l i 60 output += "\n\nFirst occurrence of 'c', 'a', '$' is nhận một mảng ký tự là 61 "located at " + letters.IndexOfAny( searchLetters đó xuất hiện đầu nào ); 62 tiên trong tham ssốmảngtiên  tham ố đầu lý tự  63 output += "\nFirst occurrence of 'c, 'a' or '$' is " + 64 "located at " + letters.IndexOfAny( searchLetters, 7 ); 65 66 output += "\nFirst occurrence of 'c', 'a' or '$' is " + 67 "located at " + letters.IndexOfAny( searchLetters, 20, 5 ); 68
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2