Bài giảng môn Kỹ thuật lập trình - Chương 2: Xử lý mảng và chuỗi

Khởi tạo và gán giá trị Mảng tenMang = new KieuDuLieu[spt]{gtri1, gtri2, gtri3, };  diem = new int[5]{ 5, 6, 7, 6, 9 } Giá trị không nhất thiết phải là hằng số  Ví dụ Random r = new Random(); int[] pins = new int[4]{ r.Next() % 10, r.Next() % 10, r.Next() % 10, r.Next() % 10 }; Số giá trị trong dấu ngoặc phải bằng số phần tử mảng được khai báo

pdf55 trang | Chia sẻ: thanhle95 | Lượt xem: 539 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng môn Kỹ thuật lập trình - Chương 2: Xử lý mảng và chuỗi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Chương 2 Xử lý mảng và chuỗi Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Nội dung Mảng Các thao tác trên mảng Chuỗi Các thao tác trên chuỗi Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng Là tập hợp nhiều phần tử có cùng kiểu dữ liệu Số phần tử trong mảng được xác định trước Mỗi phần tử được đánh số chỉ mục, bắt đầu từ 0 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng Một phòng chứa các tủ Số lượng tủ chứa ? Tủ Chứa gì? Số thứ tự tủ, chỉ mục tủ Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng Khoa Hệ Thống Thông Tin 0 1 2 3 4 Mảng các từ: Mảng các số nguyên: 0 1 2 3 4 5 6 7 Ví dụ về mảng: Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khai báo Mảng KiểuDữLiệu[] tênMảng; Ví dụ  int[] bangDiem;  string[] loiNoi;  DateTime[] ngaySinh; Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khởi tạo Mảng tenMang = new KieuDuLieu[soPhanTu] Ví dụ  diem = new int[10];  loiNoi = new string[20];  ngaySinh = new DateTime[7];  float diemTB = new float[5]; 0 0 000 0 1 432 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khởi tạo và gán giá trị Mảng tenMang = new KieuDuLieu[spt]{gtri1, gtri2, gtri3,};  diem = new int[5]{ 5, 6, 7, 6, 9 } Giá trị không nhất thiết phải là hằng số  Ví dụ Random r = new Random(); int[] pins = new int[4]{ r.Next() % 10, r.Next() % 10, r.Next() % 10, r.Next() % 10 }; Số giá trị trong dấu ngoặc phải bằng số phần tử mảng được khai báo Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Truy suất từng phần tử Mảng Xác định số phần tử của mảng  tenMang.Length Truy xuất phần tử: tenMang[soThuTu]  0 <= soThuTu <= (tenMang.Length – 1) Ví dụ  Lấy điểm thứ 3 (soThuTu = 2) của mảng diem int diem3 = diem[2];  diem3 = 7 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Gán giá trị cho từng phần tử Mảng Gán điểm thứ 3 của mảng diem là 10  diem[2] = 10 Gán điểm thứ 4 của mảng diem bằng điểm thứ nhất cộng 4  diem[3] = diem[0] + 4 5 6 9610 0 1 432 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Duyệt Mảng Dùng vòng lặp for Ví dụ duyệt mảng diem for (int i = 0; i < diem.Length; i++) { Console.WriteLine(diem[i].ToString()); } Duyệt và gán phần tử for (int i = 0; i < diem.Length; i++) { diem[i] += 1; Console.WriteLine(diem[i].ToString()); } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Duyệt Mảng bằng foreach Ví dụ foreach (int i in diem) { Console.WriteLine(i.ToString()); } Không nên dùng foreach khi  Cần duyệt một phần trong mảng (ví dụ duyệt từ phần tử thứ 2 tới thứ 10)  Cần duyệt từ cuối về đầu mảng  Cần biết chỉ số mảng trong vòng lặp  Cần thay đổi giá trị của phần tử mảng Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Sao chép Mảng Mảng là kiểu tham chiếu  gán mảng là gán tham chiếu Ví dụ  int[] mangA = diem;  mangA và diem cùng tham chiếu đến vùng nhớ chứa các phần tử của mảng  Thay đổi giá trị trong mangA sẽ ảnh hưởng đến diem Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Sao chép Mảng diem mangA 5 6 967 diem mangA 5 6 968 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Sao chép Mảng Tạo mảng mới và gán giá trị từ mảng cũ Dùng CopyTo  int[] mangA = new int[diem.Length];  diem.CopyTo(mangA, 0); Dùng Array.Copy  Array.Copy(diem, mangA, diem.Length); Dùng Clone  mangA = (int[]) diem.Clone(); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đảo Mảng Phương thức Reverse của lớp Array thực hiện việc đảo thứ tự các phan tử trong mảng. Cú pháp thực hiện: int[] mang = { 15, 26, 7, 28, 19, 6 }; Array.Reverse(mang); Kết quả: mang = { 6,19,28,7,26,15}; Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Sắp xếp Mảng Phương thức Sort() của lớp Array thực hiện việc sap xep các phan tử trong mảng. Cú pháp thực hiện: Array.Sort(ten_mang); Ví dụ: int[] mang = { 9, 5, 7, 4, 6 }; Array.Sort(mang); Kết quả: mang = { 4, 5, 6, 7,9 }; Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng Tìm kiếm trên mảng đã được sắp xếp Tìm kiếm trên mảng chưa được sắp xếp 0 2 5 6 7 8 9 5 2 9 7 6 0 8 9 8 7 6 5 2 0 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng Tìm kiếm trên mảng đã được sắp xếp Phương thức BinarySearch của lớp Array thực hiện việc tım̀ kiem một giá trị trong một mảng đã được sap xep trước, trả ve ket quả là so nguyên cho biet chı̉ soindex của pha n tử tım̀ được, neu không tım̀ được thı ̀ trả ve -1. Cú pháp thực hiện: int vitri = Array.BinarySearch(tenMang, giaTriCanTim); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng đã sắp xếp Ví dụ: 0 2 5 6 7 8 9 int vitri = Array.BinarySearch(mang, 7); Kết quả vitri=4 (Tìm thấy số 7 ở vị trí thứ 4) int vitri = Array.BinarySearch(mang, 113); Kết quả vitri=-1 (-1 tức là không tìm thấy số 113) mang Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng chưa sắp xếp Ví dụ: Giải pháp 1: Sắp xếp mảng trước, sau đó gọi hàm tìm kiếm nhị phân(đơn giản, tuy nhiên nếu trường hợp không được thay đổi giá trị gốc thì không được dùng giải pháp này) Giải pháp 2: Không sắp xếp, tiến hành dùng giải thuật tìm kiếm tuyến tính. mang 5 2 9 7 6 0 8 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng chưa sắp xếp Giải thuật tìm kiếm tuyến tính Xét phần tử từ đầu cho đến cuối một cách tuần tự Tại vị trí thứ i nếu giá trị trong dữ liệu đúng với khoá cần tìm kiếm -> tìm thấy. Nếu không đúng tìm đến phần tử kế tiếp i+1 Nếu sau khi xét hết N phần tử mà không có giá trị khoá cần tìm không tìm thấy Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng chưa sắp xếp Giải thuật tìm kiếm tuyến tính • Bước 1: i = 0; // bắt đầu từ phần tử đầu tiên của dãy • Bước 2: So sánh a[i] với x, có 2 khả năng : • + a[i] = x : Tìm thấy. Dừng • + a[i] ≠ x : Sang Bước 3. • Bước 3 : i = i+1; // xét tiếp phần tử kế trong mảng • Nếu i = N: Hết mảng,không tìm thấy.Dừng • Ngược lại: Lặp lại Bước 2. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng chưa sắp xếp Giải thuật tìm kiếm tuyến tính int TimKiem( int x){ for (int i=0; i<N;i++) { if (a[i]==x) return i ; // a[i] là phần tử có khoá x }; return -1;// tìm hết mảng nhưng không có x } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng chưa sắp xếp • Ví dụ: Cho dãy số a • {12, 2, 8, 5, 1, 6, 4, 15} • Giá trị cần tìm: 8 • i = 0 12 2 158 6 4 15 X=8 0 1 432 5 6 7 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Tìm kiếm trên Mảng chưa sắp xếp 12 2 158 6 4 15 X=8 0 1 432 5 6 7 12 2 158 6 4 15 X=8 0 1 432 5 6 7 i = 1 i = 2 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng đa chiều 7 2 9 9 5 4 8 0 3 0 1 6  C# hỗ trợ mảng đa chiều, ở đây ta xét mảng 2 chiều vì nó phổ biến nhất.  Mảng hai chiều thực chất là mảng của những mảng một chiều. Ta có thể xem mảng hai chiều là một ma trận gồm các hàng và các cột Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng đa chiều Dòng 0 Dòng 1 Dòng 2 Cột 1Cột 0 Cột 2 Cột 3 M[0, 0] 7 M[0, 3] 0 M[0, 1] 2 M[0, 2] 9 M[1, 0] 9 M[1, 3] 1 M[1, 1] 5 M[1, 2] 4 M[2, 0] 8 M[2, 3] 6 M[2, 2] 3 M[2, 1] 0 Chỉ số cột Chỉ số dòng Tên mảng Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng đa chiều  Cú pháp khai báo: Kieu_dữ_liệu[ , ] mang = new Kieu_dữ_liệu [so_hang, so_cot];  Ví dụ: Tạo mảng 2 chiều có 3 dòng 5 cột: int[ , ] mang = new int[3, 5];  Đe truy cập phan tử trong mảng hai chieu, ta sử dụng index dạng tenMang[vị trí dòng, vị trí cột]. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng đa chiều int soDong = 3; int soCot = 4; int[,] mang = new int[soDong, soCot]; for(int i = 0; i < soDong; i++) { for (int j = 0; j < soCot; j++ ) { mang[i, j] = (i +1) * j; } } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Mảng đa chiều  Ngoài ra có thể duyệt bằng cách sau: for (int i = 0; i < mang.GetLength(0); i++) { for (int j = 0; j < mang.GetLength(1); j++) { Console.Write(mang[i,j] +" "); } Console.WriteLine(); } Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Đánh giá mảng  Ưu điểm chính của mảng: o Truy suất nhanh, dễ sử dụng với tập dữ liệu cố định không thay đổi trong quá trình thực thi  Hạn chế của mảng: o Mảng có kích cỡ và số chiều cố định nên khó khăn trong việc mở rộng ứng dụng. o Các phần tử được đặt và tham chiếu một cách liên tiếp nhau trong bộ nhớ nên khó khăn cho việc xóa một phần tử ra khỏi mảng. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Xử lý Hạn chế của mảng  Sử dụng collections: List, ArrayList, Dictionary để thay thế cho mảng khi thao tác trên tập dữ liệu có thay đổi trong quá trình thực thi (Thay đổi giá trị, thay đổi số lượng, thay đổi vị trí các phần tử)  Các collection này rất dễ sử dụng và có khả năng tự “co giãn” theo sự thay đổi của dữ liệu trong quá trình thực thi. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Xử lý Hạn chế của mảng  Ví dụ sử dụng List: List ds = new List(); ds.Add("an");//thêm phần tử ds.Add("bình"); ds.Remove("an");//xóa phần tử ds.Add("happy"); foreach(string s in ds)//duyệt danh sách { Console.WriteLine(s); } ds.Clear();//xóa toàn bộ Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Kiểu ký tự Lưu trữ ký tự Unicode 16-bit Kiểu trong .NET frameword: System.Char Miền giá trị: [0, 65535] Cách khai báo  Khai báo ký tự • char ch1 = 'a';  Chuyển từ số nguyên • char ch2 = (char) 65; // Ký tự ‘A’  Chú ý: • Sử dụng dấu nháy đơn để khai báo kiểu char Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Chuyển đổi kiểu ký tự char.Parse(string) Convert.ToChar(string) Chú ý: Chuỗi đưa vào chuyển đổi chỉ có 1 ký tự.  char ch1 = Convert.ToChar("a"); // ch1 = ‘a’  char ch1 = Convert.ToChar("aa"); // báo lỗi Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật So sánh kiểu ký tự Compare:  So sánh 2 ký tự, trả về hiệu số giữa ký tự so sánh và ký tự được so sánh.  Ví dụ: char ch1 = 'A'; char ch2 = 'B'; Console.WriteLine(ch1.CompareTo(ch2));  Kết quả: -1 (ký tự ch1 nhỏ hơn 1 so với ký tự ch2) Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật So sánh kiểu ký tự Equals  True: nếu 2 ký tự bằng nhau  False: nếu 2 ký tự không bằng nhau Ví dụ char ch1 = 'A'; char ch2 = (char)65; char ch3 = 'B'; Console.WriteLine(ch1.Equals(ch2)); //Kết quả ‘True’ Console.WriteLine(ch1.Equals(ch3)); //Kết quả ‘False’ Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Kiểm tra ký tự Char.IsDigit(ch): True nếu ch là chữ số Char.IsLetter(ch): True nếu ch là chữ cái Char.IsNumeric(ch): True nếu ch là chữ số Unicode Char.IsWhiteSpace(ch): True nếu ch là khoảng trắng Char.IsLower(ch): True nếu ch là chữ thường Char.IsUpper(ch): True nếu ch là chữ hoa Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Kiểm tra ký tự Console.WriteLine(Char.IsDigit('1')); //True Console.WriteLine(Char.IsDigit('½')); //False Console.WriteLine(Char.IsNumber('½')); //True Console.WriteLine(Char.IsNumber('2')); //True Console.WriteLine(Char.IsLetter('1')); //False Console.WriteLine(Char.IsLower('A')); //False Console.WriteLine(Char.IsUpper('a')); //False Console.WriteLine(Char.IsWhiteSpace(' ')); //True Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Thao tác với ký tự Char.ToLower(char):  Chuyển ký tự từ chữ hoa sang chữ thường  char ch1 = 'A';  Console.WriteLine(Char.ToLower(ch1));  Kết quả: a Char.ToUpper(char):  Chuyển ký tự từ chữ thường sang chữ hoa  char ch1 = 'a';  Console.WriteLine(Char.ToLower(ch1));  Kết quả: A Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Chuỗi Mảng các ký tự thuộc kiểu char Kiểu trong .NET framework: System.String Khai báo chuỗi  string str = "Text"; Chuỗi với ký tự đặc biệt (escape character)  Tab: "\t"  Xuống hàng: "\n"  Backslash: "\\" Khai báo nguyên văn: thêm dấu ‘@’  string str2 = @"C:\Windows"; Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Chuyển đổi sang Chuỗi ToString(): trả về chuỗi ứng với nội dung của biến  int i = 1;  string str = i.ToString(); Convert.ToString(obj)  int i = 1;  string str = Convert.ToString(i); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Thao tác với Chuỗi ToCharArray() hoặc []: Trả về mảng các ký tự trong chuỗi string str1 = "Hello"; //Tra ve ky tu e char ch1 = str1.ToCharArray()[1]; Console.WriteLine(ch1); Length: Trả về độ dài chuỗi (số ký tự)  string str1 = "Text";  int i = str1.Length; //i = 4 Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi Tên hàm Mô tả int CompareTo( string value) Nội dung : So sánh chuỗi đang xét với chuỗi value. Trả về 0 nếu hai chuỗi bằng nhau, 1 nếu lớn hơn và -1 nếu nhỏ hơn. Ví dụ : string s = "Hello"; int i; // Trả về i = 1 i = s.CompareTo("hello"); // Trả về i = 0 i = s.CompareTo("Hello"); bool Contains( string value) Nội dung : Trả về True nếu trong chuỗi đang xét có chứa chuỗi value, trả về False nếu ngược lại. Ví dụ : string s = "Hello"; bool i; // Trả về True i = s.Constains("lo"); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count) Nội dung : Copy count ký tự bắt đầu từ vị trí sourceIndex trong chuỗi vào mảng ký tự destination bắt đầu tại vị trí destinationIndex. Ví dụ : string s = "hello"; char[] ch = new char[5]; ch[0] = 'a'; ch[1] = 'b'; s.CopyTo(1, ch, 2, 3); // Trả về mảng ký tự ch là "abell" Console.WriteLine(ch); bool EndsWith( string value) Nội dung : Trả về True nếu chuỗi value là chuỗi con kết thúc (nằm ở cuối) của chuỗi đang xét. Ví dụ : string s = "Hello"; bool b; // Trả về b = True b = s.EndsWith("lo"); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi static string Format( string format, Object arg0, Object arg1, Object arg2) Nội dung : Trả về chuỗi được xây dựng từ chuỗi FormatStr bằng cách thay thế các vị trí {:} trong FormatStr thành các giá trị value1, value2, tương ứng. Ví dụ : string s = "Hello"; int n; n = 14; // "Giá trị n = 14.00, căn bậc 2 là 3.74" s = string.Format("Giá trị n = {0:N}, căn bậc 2 là {1:N}", n, Math.Sqrt(n)); Console.WriteLine(s); // "Giá thành sản phẩm = $200.00" s = string.Format("Giá thành sản phẩm = {0:C}", 200); Console.WriteLine(s); DateTime date = new DateTime(2011, 2, 2, 1, 1, 1, 511); // "Today is Monday, February 2, 2011" s = string.Format("Today is {0:D}", date); Console.WriteLine(s); s = string.Format("{0:dd/MM/yyyy HH:mm:ss}", DateTime.Now); Console.WriteLine(s); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi bool Equals( string value) Nội dung : Trả về True nếu chuỗi đang xét bằng với chuỗi value, ngược lại trả về False. Ví dụ : string s = "Hello"; bool b; // Trả về b = True b = s.Equals("Hello"); string Insert( int startIndex, string value) Nội dung : Trả về chuỗi mới được xây dựng từ chuỗi ban đầu bằng cách chèn vào chuỗi ban đầu tại vị trí startIndex chuỗi con value. Ví dụ : string s = "Hello !"; string val = "everybody"; //Trả về "Helloeverybody !" s = s.Insert(5, val); Console.WriteLine(s); int IndexOf( char/string value) Nội dung : Trả về vị trí xuất hiện đầu tiên của ký tự hoặc chuỗi value trong chuỗi. Trả về -1 nếu không tìm thấy. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi int IndexOf( char/string value, int startIndex) Nội dung : Trả về vị trí xuất hiện đầu tiên của ký tự hoặc chuỗi value trong chuỗi kể từ vị trí startIndex. Trả về -1 nếu không tìm thấy. Ví dụ : string s = "Hello everybody !"; int i = 0; // Trả về i = 1 i = s.IndexOf("e"); // Trả về i = 6 i = s.IndexOf("e", i + 1); // Trả về i = 8 i = s.IndexOf("e", i + 1); int LastIndexOf( char/string value) Nội dung : Tương tự hàm IndexOf, nhưng trả về vị trí xuất hiện cuối cùng. int LastIndexOf( char/string value, int startIndex) Nội dung : Tương tự hàm IndexOf, nhưng trả về vị trí xuất hiện cuối cùng. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi string PadLeft( int width) Nội dung : Trả về chuỗi đã được canh lề trái. Thao tác canh lề như sau: tạo chuỗi mới gồm width ký tự, đặt chuỗi ban đầu vào bên phải chuỗi mới, các ký tự khoảng trắng sẽ được chen vào các vị trí còn trống bên trái trong chuỗi mới. Ví dụ : string s = "Hello!"; string s_leftaligned; // Trả về chuỗi " Hello!" s_leftaligned = s.PadLeft(10); Console.WriteLine(s_leftaligned); string PadLeft( int width, char ch) Nội dung : Tương tự hàm PadLeft ở trên, nhưng thay vì sử dụng các ký tự khoảng trắng, các ký tự ch sẽ được sử dụng. Ví dụ : string s = "Hello!"; string s_leftaligned; // Trả về chuỗi "****Hello!" s_leftaligned = s.PadLeft(10, '*'); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi string PadRight( int width) Nội dung : Tương tự hàm PadLeft, nhưng canh lề phải. string PadRight( int width, char ch) Nội dung : Tương tự hàm PadLeft, nhưng canh lề phải. string Remove( int startIndex, int count) Nội dung : Trả về chuỗi được xây dựng bằng cách bỏ đi trong chuỗi ban đầu count ký tự bắt đầu từ vị trí startIndex. Ví dụ : string s = "Hello!!!"; // Trả về chuỗi "Hell!" s = s.Remove(4, 3); string Replace( string oldStr, string newStr) Nội dung : Trả về chuỗi được xây dựng bằng cách thay thế các chuỗi con oldStr trong chuỗi ban đầu bằng các chuỗi con newStr. Ví dụ : string s = "Hello"; // Trả về chuỗi "Hero"; s = s.Replace("ll", "r"); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi bool StartsWith(string value) Nội dung : Ngược lại với hàm EndsWith string Substring(int startIdx, int count) Nội dung : Trả về chuỗi con trong chuỗi ban đầu, bắt đầu từ vị trí startIdx và có độ dài count ký tự. Ví dụ : string s = "Hello"; // Trả về chuỗi "ell"; s = s.Substring(1, 3); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi string ToLower() Nội dung : Trả về chuỗi có kiểu chữ thường từ chuỗi ban đầu. string ToUpper() Nội dung : Trả về chuỗi có kiểu chữ hoa từ chuỗi ban đầu. string Trim() Nội dung : Trả về chuỗi mới sau khi bỏ đi các ký tự khoảng trắng ở đầu và cuối của chuỗi ban đầu. Tương tự hàm Trim trong thư viện hàm của VB.Net. string TrimEnd() Nội dung : Tương tự hàm Trim, nhưng chỉ bỏ đi các ký tự khoảng trắng ở cuối. string TrimStart() Nội dung : Tương tự hàm Trim, nhưng chỉ bỏ đi các ký tự khoảng trắng ở đầu. Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Các hàm xử lý Chuỗi string[] Split (par