Bài giảng Kỹ thuật lập trình - Chương 2: Xử lý mảng và chuỗi
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
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ủ
Khai báo Mảng
KiểuDữLiệu[] tênMảng;
Ví dụ
int[] bangDiem;
string[] loiNoi;
DateTime[] ngaySinh;
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 2: Xử lý mảng và chuỗi", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Kỹ thuật lập trình - 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 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 pha n 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 sa p xe p các pha n 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̀ kie m một giá trị trong một mảng đã được sa p xe p trước, trả ve ke t quả là so nguyên cho bie t chı̉ so index của pha n tử tım̀ được, ne u 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: Kie u_dữ_liệu[ , ] mang = new Kie u_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 pha n tử trong mảng hai chie u, 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 (params char[] separator) Nội dung: Trả về mảng các chuỗi con được phân cách bởi separator Ví dụ : string str = "mot,hai,ba"; //Tra ve mang gom {"mot", "hai", "ba"} string[] str2 = str.Split(','); Console.WriteLine(str2[1]); static string Join (string separator, string[] value) Nội dung: Nối các chuỗi trong mảng value thành 1 chuỗi, phân cách bởi separator Ví dụ : string[] mang = new string[3]; mang[0] = "mot"; mang[1] = "hai"; mang[2] = "ba"; //Tra ve chuoi "mot*hai*ba" string str = string.Join("*", mang); Khoa Hệ Thống Thông Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật END
File đính kèm:
- bai_giang_ky_thuat_lap_trinh_chuong_2_xu_ly_mang_va_chuoi.pdf