string - chuỗi ký tự C#

Chuỗi ký tự thực tế ta đã làm việc với nó ở các ví dụ trước, chuỗi là một tập hợp các ký tự sắp xếp có vị trí, nó chỉnh là một mảng các ký tự, kiểu dữ liệu chuỗi đó là string, lớp biểu diễn các chuỗi là System.String

Bạn có thể khai báo, khởi tạo chuỗi với kiểu string, cũng như thực hiện các phép toán trên chuỗi...

string sExample = "Xin chào";       // Khai báo và khởi tạo chuỗi
sExample += " các bạn";             // Nối chuỗi +=, trả về "Xin chào các bạn"
sExample = sExample + "!";          // Nối chuỗi +, trả về "Xin chào các bạn!"

Như vậy, chuỗi nhập vào để trong cặp "", để chèn vào nó các ký tự đặc biệt ta dùng ký hiệu \: ví dụ \\ là ký tự \, \" là ký tự ", \n là ký tự xuống dòng, \r là ký tự về đầu dòng ...

Nếu muốn viết chuỗi cố định - không sử dụng \ để nhập giá trị đặc biệt thì cho ký hiệu @ vào đầu chuỗi:

string s = @"Ký tự \ được dùng để chèn ký tự đặc biệt như \n, \r";

Chuỗi như là mảng mà phần tử mảng là các ký tự, nên có thể truy cập phần tử mạng bằng indexer để đọc ký tự:

char c = sExample[1];               // c= 'i'

Một số phương thức làm việc với chuỗi C#

string stringA =  "Xin chào,";
string stringB = "các bạn!";
method Sử dụng
Concat phương thức tĩnh, nối các chuỗi liệt kê ở tham số lại với nhau
string s = String.Concat(stringA, stringB);    // s = "Xin chào,các bạn!"
Format Convert các đối tượng thành chuỗi và chèn chúng vào chuỗi định dạng được chỉ ra, cú pháp cơ bản
String.Format(stringFormat, arg0, arg1 ...)

Trong đó stringFormat là chuỗi định dạng, chứa mẫu và và vị trí mà arg0, arg1 ... sẽ chèn vào.

string s = String.Format("Chào {0}, {0} ơi, hôm nay ngày {1} rồi!", "Nam", 20);
// s = "Chào Nam, Nam hôm nay ngày 20 rồi!"

Nhìn vào, chuỗi định dạng chỗ nào có {0} sẽ được chèn bởi arg0("Nam"), chỗ nào có {1} sẽ được chèn bởi arg1 (20)

Tại các vị trí cần chèn {} có thể định dạng dữ liệu chèn vào, chi tiết xem tại Formatting

IndexOf Tìm vị trí (đầu tiên) của ký tự hoặc chuỗi ký tự trong chuỗi
LastIndexOf Tìm vị trí (cuối) của ký tự hoặc chuỗi ký tự trong chuỗi
Insert Tạo chuỗi = chèn chuỗi này vào trong chuỗi khác, vị trí chèn cần chỉ ra
var s = stringA.Insert(8, " tất cả"); // "Xin chào tất cả,"
PadLeft Tạo chuỗi mới từ chuỗi cũ, độ dài chuỗi mới chỉ ra - nếu độ dài chuỗi mới lớn hơn chuỗi cũ thì các ký tự phía đầu được chèn khoảng trắng hoặc ký tự chỉ định.
string s1 = "Abc";
string s2 = s1.PadLeft(6);        //  "   Abc"
string s3 = s1.PadLeft(6, '*');   //  "***Abc"
PadRight Tương tự PadLeft nhưng chèn khoảng trắng bên phải
Replace Tìm và thay thế trong chuỗi
var s = stringA.Replace("chào", "CHÀO");   // "Xin CHÀO,"
Split Trả về mảng các chuỗi con được chia từ chuỗi gốc bởi ký tự chia chỉ định, chuỗi chia chỉ định
var s = "Nguyễn Văn A".Split(' '); // s tương đương mảng {"Nguyễn","Văn", "A"}
ToLower Sinh chuỗi mới bằng cách chuyển các ký tự thành chữ thường
ToUpper Sinh chuỗi mới bằng cách chuyển các ký tự thành chữ in
Trim Sinh chuỗi mới bằng cách loại bỏ khoảng trắng (hoặc chỉ định) ở đầu và cuối
Substring Lấy ra chuỗi con từ chuỗi chính - chuỗi con lấy từ vị trí chỉ ra đến cuối hoặc theo độ dài
string s = stringA.Substring(4); // s = "chào,"
string x = stringA.Substring(0, 3); // s = "Xin" (dài 3)

Sử dụng StringBuilder

Khi sử dụng biến kiểu string để thực hiện các thao tác nhằm mục đích cuối cùng thu được chuỗi theo yêu cầu, trong quá trình đó bạn có thể sử dụng nhiều biến kiểu string, để phục vụ các phép toán như nối chuỗi, tìm kiếm, thay thế ... Mỗi khi khởi tạo một biến kiểu string, bạn đã cấp phát một lượng bộ nhớ để lưu trữ chuỗi - thường thì bộ nhớ này nhiều hơn những gì bạn cần.

Để thi hành tối ưu hơn về tốc độ, về sử dụng bộ nhớ có thể dùng tới đối tượng StringBuilder ở namespace System.Text (thêm vào đầu file using System.Text;)

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("Xin chào các bạn - xuanthulab.net");
stringBuilder.Replace("Xin chào", "XIN CHÀO");
Console.WriteLine(stringBuilder); // Out: XIN CHÀO các bạn - xuanthulab.net

Một số phương thức khi sử dụng StringBuilder

method Sử dụng
Append Nối một đối tượng (chuỗi, số ...) vào StringBuilder
AppendFormat Nối vào một chuỗi sinh ra theo StringFormat
Insert Chèn vào StringBuilder một chuỗi ở vị trí chỉ ra
Remove Loại bỏ một lượng ký tự, bắt đầu từ vị trí do chỉ định
Replace Tìm và thay thế
ToString Trả về chuỗi (String)

Thêm các biểu thức vào chuỗi

Khi viết chuỗi có ký tự $ phía trước, thì trong chuỗi đó có thể chèn các bảo thức vào chỗ có cặp {} : {biểu-thức}

int a = 10;
int b = 2;
string s = $"Kết quả {a}/{b} là {a/b}";  // "Kết quả 10/2 là 5"

Khi làm việc với chuỗi, những tác vụ phức tạp muốn nhanh chóng có thể áp dụng kỹ thuật biểu thức chính quy vì C# hỗ trợ các lớp để làm việc với RegExp (regularexpressions), phần này trình bày ở một bài riêng

Đăng ký theo dõi ủng hộ kênh