Thao tác với chuỗi là công việc thường ngày của hầu hết các lập trình viên C#. .NET Framework mang lại cho chúng ta nhiều công cụ hữu ích để thao tác với chuỗi, tuy nhiên với những người mới bắt đầu thì các bạn cần đầu tư thời gian nghiên cứu một chút để sử dụng hiệu quả các API của nền tảng .NET để xử lý chuỗi.
Điều đầu tiên cần lưu ý là chuỗi trong .NET là kiểu tham chiếu (reference type). Các kiểu tham chiếu sẽ được quản lý ở bộ nhớ heap trong .NET và chúng được quản lý bởi bộ thu gom rác của .NET (.NET Garbage Collector) và không phải như các kiểu giá trị (value type), chúng không được tự động hủy khi chúng không còn nằm trong phạm vi sử dụng.
Các chuỗi có thể dễ dàng được khai bao theo cú pháp dưới đây:
Lưu ý rằng các biến kiểu string không có giá trị mặt định, do đó bạn cần phải quy định giá trị cho nó trước khi truy xuất hoặc sử dụng nó:
string s1;
Literal1.Text = s1; //Câu lệnh này sẽ làm sinh ra lỗi
string s2 = "";
Literal1.Text = s2; //Câu lệnh này là hợp lệ
Lưu ý rằng các chuỗi là bất biến và do đó một chuỗi sẽ không thể thay đổi được. Vì vậy nếu bạn thao tác gì đó với một chuỗi để sinh ra chuỗi mới thì bạn cần phải gán giá trị thu được cho một biến nào đó.
string s1 = "chữ thường";
s1.ToUpper() ; //Trong trường hợp này s1 không đổi
Literal1.Text = s1; //kết quả xuất ra sẽ là “chữ thường”
string s2 = "chữ thường";
s2 = s2.ToUpper() ; //s2 sẽ được gán bằng chuỗi mới in hoa tất cả các ký tự
Literal2.Text = s2; //xuất ra 'ALL LOWER CASE'.
Nối chuỗi
Chúng ta có thể nối các chuỗi với nhau một cách dễ dàng bằng cách sử dụng toán tử ‘+’
string s1 = "Việt ";
string s2 = "Nam";
Literal1.Text = s1 + s2; //Việt Nam
Tuy nhiên toán tử ‘+’ không phải là phương thức hiệu quả để nối nhiều chuỗi với nhau (bởi vì chuỗi là bất biến, và gọi phép nối sẽ làm tạo ra các chuỗi được lưu trên heap và không được hủy một cách tự động cho đến khi Garbage Collector tiêu hủy chúng).
Để khắc phục hạn chế này, chúng ta sử dụng lớp StringBuilder để nối chuỗi sử dụng phương thức Append()
StringBuilder sb = new StringBuilder();
sb.Append("Việt ");
sb.Append("Nam");
Literal1.Text = sb.ToString();
Nếu bạn chỉ muốn nối hai chuỗi với nhau thì việc sử dụng StringBuilder chưa chắc đã hiệu quả bằng toán tử ‘+’, nhưng khi bạn nối nhiều hơn 3 chuỗi thì hiệu quả mang lại sẽ rõ rệt và lúc đó đừng đắn đo khi sử dụng lớp StringBuilder.
Các ký tự Escape
Tương tự với ngôn ngữ C, các chuỗi C# có thể chứa các ký tự escape, các ký tự này sẽ định nghĩa cách chuỗi được in ra.
Các kỹ tự escape được bắt đầu bởi ‘\’ và theo sau là một ký tự
Dưới đây là một số ký tự escape thông dụng:
\’ Thêm vào một dấu nháy đơn
\” Thêm vào một dấu nháy kép
\\ Thêm vào ký tự xuyệt (‘\’)
\a Kích hoạt một cảnh báo hệ thống
\n Thêm một dòng mới
\r Chuyển qua đoạn văn mới
\t Thêm một tab
Các chuỗi nguyên mẫu (Verbatim Strings)
Để hiển thị chuỗi chính sát như khi chúng ta nhập chuỗi vào, bạn chỉ cần thêm ký tự @ vào đầu chuỗi.
Ví dụ:
string outputStr = "Tên của website là \'Jou lập trình\' ";
Response.Write(outputStr);
Kết quả xuất ra
Tên của website là ‘Jou lập trình’
Nếu chúng ta thêm ký tự @ trước định nghĩa chuỗi.
string outputStr = @"Tên của website là \'Jou lập trình\' ";
Response.Write(outputStr);
Kết quả xuất ra
Tên của website là \'Jou lập trình\'
Thay vào đó chúng ta sẽ gán cho biến ouputStr như sau:
string outputStr = @"Tên của website là 'Jou lập trình'";
Response.Write(outputStr);
Kết quả xuất ra
Tên của website là 'Jou lập trình'
Trên đây là một số kiến thức cơ bản về lập trình với chuỗi trên C# hy vọng sẽ hữu ích cho những người mới bắt đầu với C#.
Happy coding!
Theo d.jou.vn