Lớp String là 2 lớp cơ bản trong .NET giúp người dùng thao tác với chuỗi 1 cách nhanh-gọn-lẹ hơn, hầu như trong .NET, bạn sẽ không phải “gồng mình” với những thao tác xử lý chuỗi phức tạp vì C# đã cung cấp cho bạn những phương thức để xử lý chúng.
Hiểu sơ qua về lớp String:
- Một thể hiện của lớp String thì không thay đổi, nghĩa là mỗi khi một thể hiện được tạo, nó không bị chỉnh sửa được. Nó có những phương thức mà trả về 1 chuỗi mới, 1 chuỗi con từ 1 chuỗi cha.
- Chỉ mục trong String được tính từ số 0 (zero based). Nghĩa là ký tự đầu tiên trong chuỗi bất kỳ sẽ có chỉ mục là 0.
- Mặc định, String sẽ trả về 1 chuỗi rỗng (“”), bởi thế bạn không cần phải khởi tạo nó như bạn đã từng làm trong C++ hoặc các ngôn ngữ khác. Lưu ý: một chuỗi rỗng thì lớn hơn một chuỗi null. ^ ^
Những thành viên trong lớp String:
Lớp String cung cấp 2 thuộc tính – Chars và Length. Thuộc tính Chars trả về 1 ký tự tại 1 vị trí xác định trong chuỗi. Còn thuộc tính Length trả về số lượng ký tự có trong chuỗi.
Lớp String cung cấp 2 loại phương thức – static và instance. Phương thức Static chỉ có thể được sử dụng với lớp String (khỏi phải tạo 1 thể hiện của lớp String nè), còn phương thức Instance chỉ sử dụng được thông qua thể hiện của lớp String.
So sánh 2 chuỗi:
Phương thức Compare so sánh 2 chuỗi và trả về 1 giá trị kiểu int. Giá trị này có thể lớn hơn, nhỏ hơn hoặc bằng 0
+ Nhỏ hơn 0: chuỗi 1 nhỏ hơn chuỗi 2
+ Bằng 0: 2 chuỗi bằng nhau
+ Lớn hơn 0: chuỗi 1 lớn hơn chuỗi 2
Bạn có thể so sánh chuỗi như sau:
Sao chép và nối chuỗi:
Phương thức Concat nối nhều chuỗi và trả về 1 chuỗi mới. Sử dụng Concat, bạn có thể nối 2 chuỗi bất kỳ như sau:
Đoạn code sau minh họa việc nối 1 chuỗi với 1 đối tượng:
Phương thức Copy sao chép nội dung 1 chuỗi đến 1 chuỗi khác. Code minh họa như sau:
Phương thức Clone trả về 1 bản sao chép của 1 chuỗi từ 1 đối tượng. Đoạn code sau đây minh họa việc tạo 1 bản sao chép của chuoi01:
Phương thức Join hữu ích khi bạn cần chèn 1 saparator (khó dịch quá, tạm dịch là "chuỗi nhận dạng") vào giữa những phần tử trong chuỗi. Nói thế khó hiểu quá, mình cho ví dụ sau để dễ hiểu:
Thêm, xóa và thay thế chuỗi:
Phương thức Insert chèn 1 chuỗi bất kỳ vào 1 chỉ mục của 1 thể hiện String. Ví dụ:
Phương thức Remove xóa 1 số ký tự bất kỳ từ 1 vị trí bất kỳ trong 1 chuỗi. Phương thức này trả về 1 kết quả là 1 chuỗi. Ví dụ, đoạn code sau xóa 3 ký tự từ chỉ mục thứ 3
Phương thức Replace thay thế những ký tự bất kỳ trong chuỗi thành những ký tự do bạn chỉ định. Sau đây là đoạn code minh họa:
UperCase và LowerCase một chuỗi:
Output:
Với string[] split:
Hiểu sơ qua về lớp String:
- Một thể hiện của lớp String thì không thay đổi, nghĩa là mỗi khi một thể hiện được tạo, nó không bị chỉnh sửa được. Nó có những phương thức mà trả về 1 chuỗi mới, 1 chuỗi con từ 1 chuỗi cha.
- Chỉ mục trong String được tính từ số 0 (zero based). Nghĩa là ký tự đầu tiên trong chuỗi bất kỳ sẽ có chỉ mục là 0.
- Mặc định, String sẽ trả về 1 chuỗi rỗng (“”), bởi thế bạn không cần phải khởi tạo nó như bạn đã từng làm trong C++ hoặc các ngôn ngữ khác. Lưu ý: một chuỗi rỗng thì lớn hơn một chuỗi null. ^ ^
Những thành viên trong lớp String:
Lớp String cung cấp 2 thuộc tính – Chars và Length. Thuộc tính Chars trả về 1 ký tự tại 1 vị trí xác định trong chuỗi. Còn thuộc tính Length trả về số lượng ký tự có trong chuỗi.
Lớp String cung cấp 2 loại phương thức – static và instance. Phương thức Static chỉ có thể được sử dụng với lớp String (khỏi phải tạo 1 thể hiện của lớp String nè), còn phương thức Instance chỉ sử dụng được thông qua thể hiện của lớp String.
So sánh 2 chuỗi:
Phương thức Compare so sánh 2 chuỗi và trả về 1 giá trị kiểu int. Giá trị này có thể lớn hơn, nhỏ hơn hoặc bằng 0
+ Nhỏ hơn 0: chuỗi 1 nhỏ hơn chuỗi 2
+ Bằng 0: 2 chuỗi bằng nhau
+ Lớn hơn 0: chuỗi 1 lớn hơn chuỗi 2
Visual C# Code:
- // So sanh 2 chuoi bat ky
- //====================================
- Console.WriteLine("First result:" +res.ToString());
- str2 = "ttt";
- Console.WriteLine("Second result:" +res.ToString());
- str1 = "ttt";
- Console.WriteLine("Third result:" +res.ToString));
- //====================================
Visual C# Code:
- Console.WriteLine( str.CompareTo(str1) );
Sao chép và nối chuỗi:
Phương thức Concat nối nhều chuỗi và trả về 1 chuỗi mới. Sử dụng Concat, bạn có thể nối 2 chuỗi bất kỳ như sau:
Visual C# Code:
Visual C# Code:
Phương thức Copy sao chép nội dung 1 chuỗi đến 1 chuỗi khác. Code minh họa như sau:
Visual C# Code:
Phương thức Clone trả về 1 bản sao chép của 1 chuỗi từ 1 đối tượng. Đoạn code sau đây minh họa việc tạo 1 bản sao chép của chuoi01:
Visual C# Code:
Phương thức Join hữu ích khi bạn cần chèn 1 saparator (khó dịch quá, tạm dịch là "chuỗi nhận dạng") vào giữa những phần tử trong chuỗi. Nói thế khó hiểu quá, mình cho ví dụ sau để dễ hiểu:
Visual C# Code:
Output Code:
- Join Results: ppp, ccc, kkk
Thêm, xóa và thay thế chuỗi:
Phương thức Insert chèn 1 chuỗi bất kỳ vào 1 chỉ mục của 1 thể hiện String. Ví dụ:
Visual C# Code:
Output Code:
- ppbbbp
Visual C# Code:
- Console.WriteLine(s.Remove(3, 3));
Output Code:
- 123000
Phương thức Replace thay thế những ký tự bất kỳ trong chuỗi thành những ký tự do bạn chỉ định. Sau đây là đoạn code minh họa:
Visual C# Code:
Output Code:
- Replaced string:lll
UperCase và LowerCase một chuỗi:
Visual C# Code:
Output Code:
- Uppercase:ADGAS
- Lowercase:abnmdwer
String C# một vài đặc điểm bổ sung lại
Assignment fpt aptech C# 2016
Một vài đặc điểm chính
http://www.bravohex.com/2015/07/working-with-strings-in-c-sharp.html - Có thể gán dữ liệu cho một đối tượng string bằng cách khai báo như sau:string a = "This is a text!"; string b = new String("Hello");
- Strings là immutable - nội dung của một đối tượng chuỗi không thể thay đổi sau khi đối tượng được tạo ra. Để nối chuỗi ta sử dụng toán tử (+) điều này làm nó trông giống string có thể mutable, tuy nhiên không phải là như thế. Ví dụ:string a = "Hello"; a += "Wolrd!";
Trình biên dịch sẽ tạo một chuỗi mới "Hello World" và gán nó cho a. Chuỗi cũ "Hello" sẽ được GC (garbage collection) thu gom. - Toán tử [] có thể dùng để truy cập readonly các ký tự của chuỗi (Bạn không thể modify ngược lại đối tượng string). Ví dụ:string a ="Goodbye!"; char c= a[0]; //result: c ='G'
- Một chuỗi string phải được đặt trong 2 dấu ngoặc kép hoặc @ và hai dấu ngoặc kép. Ví dụ:string path = "C\\Program\\"; string path = @"C:\Program"
Với đường dẫn, cú pháp với @ tiện lợi hơn và giữ đúng nguyên văn của chuỗi. - Chuỗi string có thể chứa bất kỳ ký tự nào. Trong đó có cả mã Escape.Làm việc với Strings
Length - Độ dài
Để tính độ dài của chuỗi ta sử dụng properties Length. Kết quả được tính bao gồm cả khoảng trống.string a = "Obtaining the Length!"; Console.WriteLine("A length = {0}",a.Length); //Result: A length = 21
Concatenating - Nối chuỗi
Để nối chuỗi bạn có thể sử dụng toán tử (+). Tuy nhiên ta cũng có thể sử dụng phương thức Concat() để nối chuỗi.string a = "Say"; string b = "Hello"; string c = "Wolrd!"; string[] arrayString = new string[5]; arrayString[0] = "a"; arrayString[1] = "b"; arrayString[2] = "c"; arrayString[3] = "d"; arrayString[4] = "f"; string r1 = String.Concat(a, b); string r2 = String.Concat(a,"\t",b,"t",c); //and more.. string r3 = String.Concat(arrayString); Console.WriteLine(r1); Console.WriteLine(r2); Console.WriteLine(r3);
Comparing - So sánh
Bạn có thể dùng toán tử (== hoặc !=) để so sánh hai chuỗi có giống nhau hoặc không (Bao gồm cả khoảng trống và in hoa, in thường). Tuy nhiên điều này khá hạn chế, ta có một phương thức so sánh khác đó là Compare(), kết quả trả về 0 hoặc -1 (match hoặc not match).string a = "Hello World"; string b = "HELLO WORLD";
var result = String.Compare(a, b); //-1 var result1 = String.Compare(a, b, true); //0 var result2 = String.Compare(a, b, false); //-1 Console.WriteLine(result == 0 ? "MATCH" : "NOT MATCH"); //NOT MATCH Console.WriteLine(result1 == 0 ? "MATCH" : "NOT MATCH"); //MATCH Console.WriteLine(result2 == 0 ? "MATCH" : "NOT MATCH"); //NOT MATCH
String Case - In hoa, In thường
Case của ký tự trong một chuỗi string có thể là IN HOA hoăc in thường. Ta có thể sử dụng 2 phương thức ToUpper() và ToLower() để thực hiện.string a = "Hello World"; Console.WriteLine(a.ToUpper()); //HELLO WORLD
Splitting - Tách chuỗi
Đây là phương thức cắt chuỗi dựa vào giá trị xác định được khai báo trước. Ta có thể sử dụng 3 cách split đơn giản như sau:
- char[] split
- string[] split
- Regex.Split
string text = "Hello\n\rThis is a text message";
char[] split1 = { ' ', '.', ';', ',','\r','\n' };
string[] result1 = text.Split(split1);
string[] result2 = text.Split(split1, 2);
string[] result3 = text.Split(split1, 2, StringSplitOptions.RemoveEmptyEntries);
string[] result4 = text.Split(split1, StringSplitOptions.RemoveEmptyEntries);
foreach (var s in result1)
{
Console.WriteLine(s);
}
Bạn phải khai báo các ký tự để làm điểm tách của chuỗi. Kết quả in ra sẽ không bao gồm các ký tự này.
StringSplitOptions.RemoveEmptyEntries sẽ xóa đi các vị trí rỗng trong chuỗi gây ra bởi các Escape. Nó sẽ được thực thi sau khi chuỗi được tách.
string text = "Hello\n\rThis is a text message";
string[] split1 = {"\n","\r","is"};
string[] result3 = text.Split(split1, 3, StringSplitOptions.RemoveEmptyEntries);
string[] result4 = text.Split(split1, StringSplitOptions.RemoveEmptyEntries);
Với Regex.Split:
Nó cần một pattern quy định cách tách chuỗi, tuy tốc độ kém 2 cách trên nhưng bù lại khá là mạnh mẽ.
string text = "123ABCDE456FGHIJKL789MNOPQ012";
string pattern = @"\d+"; // "\\d+"
var data = Regex.Split(text, pattern);
foreach (var s in data)
{
Console.WriteLine(s);
}
Kết quả trả về là một mảng chứa các giá trị gồm chữ và nếu là số sẽ bị rỗng.
Tham khảo thêm Regular Expression Language tại MSDN
Đó chỉ là một trong các phương thức của Regex. Các phần khác chúng ta sẽ không tìm hiểu tại đây.
Trimming - Cắt tỉa chuỗi
string text = " Hell o everybody! ";
var result1 = text.Trim();
var result2 = text.TrimStart();
var result3 = text.TrimEnd();
Đây là cách đơn giản để loại bỏ khoảng trống 2 đầu của chuỗi hoặc chỉ một đầu tuy bạn.
Padding - Tạo khoảng trống
string text = "Hello";
var result1 = text.PadLeft(10);
var result2 = text.PadRight(10);
Console.WriteLine(result1);
Console.WriteLine(result2);
Replacement - Thay thế
string text = "Hello World";
var result1 = text.Replace('l', 'L');
var result2 = text.Replace("World", "Everybody");
Thay thế giá trị cũ bằng giá trị mới
Substring - Tách chuỗi con
Bạn muốn lấy một đoạn trong chuỗi thì có thể sử dụng phương pháp nayf
string text = "Hello World";
var result1 = text.Substring(6);
var result2 = text.Substring(6,5);//index và length
0 nhận xét:
Post a Comment